25 баллов инфа? Муниципальный этап олимпиады по информатике проводился для учеников ...

0 голосов
46 просмотров

25 баллов инфа?
Муниципальный этап олимпиады по информатике проводился для учеников
7–11-х классов. Все ученики участвовали в общем конкурсе. Каждый
участник олимпиады мог набрать от 0 до 400 баллов. По положению об
олимпиаде победителем признаётся участник, набравший наибольшее
количество баллов, при условии, что им набрано больше половины
возможных баллов. Победителей может быть несколько, если это количество
баллов наберут несколько человек; а может и не быть совсем, если никто не
наберёт больше половины.
Напишите эффективную по времени работы и по используемой памяти
программу (укажите используемую версию языка программирования,
например Borland Pascal 7.0), которая будет определять фамилию и имя
лучшего участника, не ставшего победителем олимпиады. Если следующий
за баллом победителей один и тот же балл набрали несколько человек или
если победителей нет, а лучших участников несколько (в этом случае они же
являются искомыми), то должно выдаваться только число искомых
участников. Гарантируется, что искомые участники (участник) имеются.
На вход программе сначала подаётся число участников олимпиады N
(N<10000). <br> В каждой из следующих N строк находится результат одного из участников
олимпиады в следующем формате:
<Фамилия> <Имя> <класс> <баллы>,
где <Фамилия> – строка, состоящая не более чем из 20 непробельных
символов; <Имя> – строка, состоящая не более чем из 15 непробельных
символов; <класс> – число от 7 до 11; <баллы> – целое число от 0 до 400
набранных участником баллов. <Фамилия> и <Имя>, <Имя> и <класс>,
а также <класс> и <баллы> разделены одним пробелом. Пример входной
строки:
Иванов Пётр 10 275
Программа должна выводить через пробел Фамилию и Имя искомого
участника или их число. Пример выходных данных:
Кузнецов Иван
Второй вариант выходных данных:
4


Информатика (1.2k баллов) | 46 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Program ZvonPOBEDITEL;var i,n,k,i_1,i_2,d_1,d_2: integer;c: char;s,s_1,s_2: string;begin i_1:=0; i_2:=0; d_1:=1; d_2:=1; readln(n); for i:=1 to n do begin  c:='a';  s:='';  while c<>' ' do  begin   read(c);   s:=s+c;  end;  read(c);  while c<>' ' do  begin   s:=s+c;   read(c);  end;  read(c);  while c<>' ' do  begin   read(c);  end;  readln(k);  if (k=i_1) and (i<>1) then d_1:=d_1+1;  if k>i_1 then   begin   i_2:=i_1;   i_1:=k;   s_2:=s_1;   s_1:=s;   d_2:=d_1;   d_1:=1;  end;  if (k=i_2) and (i<>1) then d_2:=d_2+1;  if (k>i_2) and (k1)then writeln(d_1); if (i_1>200) and (d_2=1) then writeln(s_2); if (i_1>200) and (d_2<>1) then writeln (d_2);end. Это сугубо мое решение за копирайтинг отвешу люлей. И к тому же сдесь есть одна ошибка о которой знаю только я, так сказать один из частных случаев здесь не прощитывается, по этому поломайте голову, Ха-Ха-Ха...

(64 баллов)
0

Язык Паскаль АБСНЕТ

0

Да шучу я не настолько жесток, была проблема когда было 1 или 2 ученика всего, программа ничего не выводила, но я исправил.

0

спасибо)

0

честно говоря, решал эту задачу через массив.и все все просчитывается и стопроцентный результат.

0

и через массив все легко и понятно