При попадании каждой частицы на экран в протоколе фиксируются
Условие
При проведении эксперимента заряженные частицы попадают на чувствительный экран, представляющий из себя матрицу размером 10 000 на 10 000 точек. При попадании каждой частицы на экран в протоколе фиксируются координаты попадания: номер ряда (целое число от 1 до 10 000) и номер позиции в ряду (целое число от 1 до 10 000).Точка экрана, в которую попала хотя бы одна частица, считается светлой, точка, в которую ни одна частица не попала, — тёмной.
При анализе результатов эксперимента рассматривают группы светлых точек, расположенных в одном ряду подряд, то есть без тёмных точек между ними.
Вам необходимо по заданному протоколу определить максимальную длину такой группы и номер ряда, в котором эта группа встречается. Если таких рядов несколько, укажите минимально возможный номер.
Входные данные.
Задание 26Первая строка входного файла содержит целое число N — общее количество частиц, попавших на экран. Каждая из следующих N строк содержит 2 целых числа: номер ряда и номер позиции в ряду.В ответе запишите два целых числа: сначала максимальную длину непрерывной группы светлых точек, затем — номер ряда, в котором эта группа встречается. Ответ:
Ответ
Ответ и полный разбор откроются после входа
Посмотреть ответРешение по шагам
Как рассуждать
Решение. Создадим массив из 10 000 строк, каждая из которых будет представлять из себя 10 000 идущих подряд нулей. Индекс массива будет являться номером ряда, а индекс позиции символа в строке будет являться номером позиции в ряду. Считаем данные из файла, присваивая в соответствующей строке соответствующему символу единицу вместо нуля. Далее с помощью строкового метода string.ToWords разобьём каждую строку в массиве с разделителем «0», таким образом получим все последовательности из светлых точек в каждом ряду. Далее последовательно пройдём по каждой найденной последовательности светлых точек и найдём последовательность с наибольшей длиной. Приведём решение на языке Pascal.var i, j, n, x, y, maxlen, maxnum: integer; screen: array[1..10000] of string; screen_str: array of string; f: text;begin assign(f,'C:\26.txt'); reset(f); readln(f, n); maxlen := 0; for i := 1 to 10000 do screen[i] := '0' * 10000; for i := 1 to n do begin readln(f, x, y); screen[x][y] := '1'; end; for i := 1 to 10000 do begin screen_str := screen[i].ToWords('0'); for j := 1 to screen_str.Length - 1 do if screen_str[j].Length > maxlen then begin maxlen := screen_str[j].Length; maxnum := i; end; end; writeln(maxlen, ' ', maxnum);end. В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — 10
Осталось ещё 1 шаг
Примечание. Путь к файлу необходимо указать…
Бесплатно · займёт минуту