После единых выпускных экзаменов по информатике в район пришла информация о том, какой ученик какой школы сколько баллов набрал. По положению об экзамене каж¬дый район сам определяет, за какой балл нужно поставить какую оценку.
Районный методист решила, что оценку «отлично» должны получить 20% участников (целое число, с отбрасыванием дробной части).
Для этого она должна определить, какой балл должен был набрать ученик, чтобы получить «отлично».
Если невозможно определить такой балл, чтобы «отлично» получили ровно 20% участников, «отлично» должно получить меньше участников, чем 20%.
Если таких участников не окажется (наибольший балл набрали больше 20% участников) — эти и только эти ученики должны получить «отлично».
Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая должна вывести на экран наименьший балл, который набра¬ли участники, получившие «отлично». Известно, что информатику сдавало больше 5-ти учеников. Также известно, что есть такое количество баллов, которое не получил ни один участник.
На вход программе сначала подаётся число учеников, сда-вавших экзамен. В каждой из следующих N строк находится информация об учениках в формате:
<Фамилия> <Имя> <Номер школы> <Количество баллов>
где <Фамилия> — строка, состоящая не более чем из 30 символов без пробелов,
<Имя> — строка, состоящая не более чем из 20 символов без пробелов,
<Номер школы> — целое число в диапазоне от 1 до 99,
<Количество баллов> — целое число в диапазоне от 1 до 100. Эти данные записаны через пробел, причём ровно один между каждой парой (то есть всего по три пробела в каждой строке).
Пример входной строки:
Иванов Иван 50 87
Пример выходных данных:
78
ПАСКАЛЬ
var k:array[0..100] of integer; (число учеников, набравших такой балл)
ch:char;
i,N,sh,ball,num,s:integer;
begin
for i: =0 to 100 do {обнуляем массив}
k[i]:=0;
readln(N); (считали количество строк}
for i:=1 to N do {перебираем все входные строки}
begin
repeat
read(ch)
until ch=' ';{считана фамилия}
repeat
read(ch) until ch=' ';(считано имя}
readln(sh,ball); {считали номер школы и балл ученика}
k[ball]:=k[ball]+l {считаем количество учеников, набравших такой балл}
end;
num:=N div 5; {вычисляем 20% от количества учеников}
S : = 0 ;
i : = 101 ;
whilе s < num do
begin
i:=i-l;
s:=s+k[i]
end;
if s=num then {"отлично" можно поставить ровно 20% участников}
writeln(i)
else
if k[i]=s then {наибольший балл набрало более 20% участников}
writeln(i)
else {ученики, набравшие "i" баллов, не получат "отлично"}
begin
i:=i+l;
while k[i]=0 do {ищем участников с большим баллом}
i:=i+l;
writeln(i)
end
end.

