Присоединиться

11 класс·высокий уровень

При попадании каждой частицы на экран в протоколе фиксируются

Условие

При проведении эксперимента заряженные частицы попадают на чувствительный экран, представляющий из себя матрицу размером 10 000 на 10 000 точек. При попадании каждой частицы на экран в протоколе фиксируются координаты попадания: номер ряда (целое число от 1 до 10 000) и номер позиции в ряду (целое число от 1 до 10 000).Точка экрана, в которую попала хотя бы одна частица, считается светлой, точка, в которую ни одна частица не попала, — тёмной.

При анализе результатов эксперимента рассматривают группы светлых точек, расположенных в одном ряду так, что между каждыми двумя соседними светлыми точками находится ровно одна тёмная.

Вам необходимо по заданному протоколу определить максимальную длину такой группы и номер ряда, в котором эта группа встречается. Если таких рядов несколько, укажите минимально возможный номер.

Входные данные.

Задание 26Первая строка входного файла содержит целое число N — общее количество частиц, попавших на экран. Каждая из следующих N строк содержит 2 целых числа: номер ряда и номер позиции в ряду.В ответе запишите два целых числа: сначала максимальную длину непрерывной группы светлых точек, затем — номер ряда, в котором эта группа встречается. Ответ:

Ответ

Ответ и полный разбор откроются после входа

Посмотреть ответ

Решение по шагам

  1. Как рассуждать

    Решение. Создадим массив из 10 000 строк, каждая из которых будет представлять из себя 10 000 идущих подряд нулей. Индекс массива будет являться номером ряда, а индекс позиции символа в строке будет являться номером позиции в ряду. Считаем данные из файла, присваивая в соответствующей строке соответствующему символу единицу вместо нуля. Далее пройдём по каждой строке в массиве и, встречая символы «10», будем увеличивать значение счётчика count на единицу. Если последовательность будет прервана, значение счётчика сбрасывается. Приведём решение на языке Pascal.var i, j, n, x, y, maxlen, maxnum, count: integer; screen: array[1..10000] 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 count := 0; for j := 1 to 10000 do begin if j mod 2 <> 0 then begin if (screen[i][j] = '1') and (screen[i][j + 1] = '0') then count := count + 1 else begin if count > maxlen then begin maxlen := count; maxnum := i; end; count := 0; end; end; end; end; writeln(maxlen, ' ', maxnum);end. В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — 9

Осталось ещё 1 шаг

  1. Примечание. Путь к файлу необходимо указать…

Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Обработка целочисленной информации»

При попадании каждой частицы на экран в протоколе фиксируются — решение с объяснением | Lom Ai