Автор: | Г. Гренкин | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt | |||
Максимальный балл: | 100 |
У Бабы Яги в избушке на курьих ножках есть инкубатор, в котором появляются куры с различным количеством ног. Ног может быть от одной до шести. Каждый день в инкубаторе появляется ровно одна курица.
В Научно-исследовательском институте сельскохозяйственных исследований, в котором Баба Яга по совместительству работает уборщицей, заинтересовались данным феноменом. Учёные поставили задачу исследования периодичности количества ног у кур с целью дальнейшего прогнозирования этого количества.
Сотрудники института собрали статистические данные. В течение нескольких дней они записывали количество ног у появившейся курицы.
Требуется по данным записям для каждого возможного количества ног определить наиболее часто встречающееся количество дней между последовательными появлениями куриц с таким количеством ног.
Входной файл содержит целое число N, за которым следуют N целых чисел от 1 до 6 — результаты измерений количества ног у кур в течение N дней.
Выходной файл должен содержать 6 целых чисел — наиболее часто встречающиеся количества дней между появлениям одноногих, двуногих, трёхногих, четырёхногих, пятиногих и шестиногих куриц. Если с таким количеством ног появилось менее двух кур, то соответствующее число в выходном файле должно быть 0.
Если решений несколько, вывести любое из них.
1 ≤ N ≤ 1000
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
x
будет хранить индекс последнего встретившегося
числа, равного текущему количеству ног l
. Переменная px
будет хранить индекс предпоследнего встретившегося числа, равного текущему
количеству ног. Переменные x
и px
легко обновляются:
if (a[i] = l) then begin px := x; x := i; end;Тогда количество дней между последовательными появлениями кур с определённым количеством ног равно
x-px
. Осталось подсчитать, сколько раз
встречается каждое возможное количество дней между последовательными появлениями
кур с таким количеством ног. Для этого заполним массив cnt
.
А затем найдём максимум в этом массиве.
program incubator; const MAX_N = 1000; var a: array[1..MAX_N] of integer; cnt: array[1..MAX_N-1] of integer; n: integer; x, px: integer; max, max_i: integer; i, l: integer; begin read(n); for i := 1 to n do read(a[i]); for l := 1 to 6 do begin for i := 1 to n-1 do cnt[i] := 0; x := 0; px := 0; for i := 1 to n do begin if (a[i] = l) then begin px := x; x := i; if ((x <> 0) and (px <> 0)) then inc(cnt[x-px]); end; end; max := 0; for i := 1 to n-1 do begin if (cnt[i] > max) then begin max := cnt[i]; max_i := i; end; end; if (max = 0) then write(0, ' ') else write(max_i, ' '); end; end.