Условие С4:
Вкомандных олимпиадах по программированию для решения предлагается не более 12
задач. Команда может решать предложенные задачи в любом порядке. Подготовленные
решения команда посылает в единую проверяющую систем соревнований. Вам
предлагается написать эффективную, в том числе и по используемой памяти,
программу, которая будет статистически обрабатывать пришедшие запросы на
проверку, чтобы определить популярность той или иной задачи. Следует учитывать,
что количество запросов в списке может быть очень велико, например, когда
олимпиада проводится через Интернет. перед текстом программы кратко опишите
используемый вами алгоритм решения задачи. На вход программе в первой строчке
подается количество пришедших запросов N. В каждой из последующих N строк записан номер задачи от 1 до 12.
Пример входных данных:
6 1 2 1 1 5 2 Программа должна вывести список всех задач, встречающихся в
запросах, в порядке возрастания (неубывания) количества запросов по ней с
указанием этого количества запросов. Каждая задача должна быть выведена только
один раз. Пример выходных данных для приведенных входных данных:
5 1 2 2 1 3 а это правильное решение:
program qq; const MAX = 12; type TInfo = record zadacha:integer; count:integer; end; var Info: array[1..MAX] of TInfo; i, j, N,zNo: integer; temp: TInfo; begin { начальные установки } for i:=1 toMAX do begin Info.zadacha:= i;
Info.count := 0;
end;
{ ввод данных }
readln(N);
for i:=1 to Ndo begin
readln(zNo);
Info[zNo].count := Info[zNo].count + 1;
end;
{ сортировка }
for i:=1 toMAX-1 do
for j:=1 toMAX-i do
if Info.count> Info[j+1].count then begin
temp :=Info;
Info:= Info[j+1];
Info[j+1] := temp;
end;
{ вывод результата }
for i:=1 toMAX do
ifInfo.count > 0 then
writeln(Info.zadacha, ' ', Info.count);
end.