Предмет: Информатика,
автор: nastyalandysh1
На городской олимпиаде по информатике участникам было предложено выполнить 3 задания, каждое из которых оценивалось по 25-балльной шкале. Известно, что общее количество участников первого тура олимпиады не превосходит 250 человек. На вход программы подаются сведения о результатах олимпиады. В первой строке вводится количество участников N. Далее следуют N строк, имеющих следующий формат:
<Фамилия> <Имя> <Баллы>
Здесь <Фамилия> – строка, состоящая не более чем из 20 символов; <Имя> – строка, состоящая не более чем из 15 символов; <Баллы> – строка, содержащая три целых числа, разделенных пробелом, соответствующих баллам, полученным участником за каждое задание первого тура. При этом <Фамилия> и <Имя>, <Имя> и <Баллы> разделены одним пробелом. Примеры входных строк:
Петрова Ольга 25 18 16
Калиниченко Иван 14 19 15
Напишите программу, которая будет выводить на экран фамилию и имя участника, набравшего максимальное количество баллов. Если среди остальных участников есть ученики, набравшие такое же количество баллов, то их фамилии и имена также следует вывести. При этом имена и фамилии можно выводить в произвольном порядке.
Ответы
Автор ответа:
0
program Bally;
var a:array[1..250] of string;
N,l,max,x,i,b,p:integer;
z,k:string;
begin
max:=0;
readln(N);
for i:=1 to N do readln(a[i]);
z:=a[1];
l:=Pos(' ',z); Delete(z,1,l);
l:=Pos(' ',z); Delete(z,1,l);
Val(copy(z,1,Pos(' ',z)-1),x,l); max:=max+x;
Delete(z,1,Pos(' ',z));
Val(copy(z,1,Pos(' ',z)-1),x,l); max:=max+x;
Delete(z,1,Pos(' ',z));
Val(z,x,l); max:=max+x;
for i:=2 to N do begin
z:=a[i];
b:=0;
l:=Pos(' ',z); Delete(z,1,l);
l:=Pos(' ',z); Delete(z,1,l);
Val(copy(z,1,Pos(' ',z)-1),x,l); b:=b+x;
Delete(z,1,Pos(' ',z));
Val(copy(z,1,Pos(' ',z)-1),x,l); b:=b+x;
Delete(z,1,Pos(' ',z));
Val(z,x,l); b:=b+x;
if b>max then max:=b;
end;
for i:=1 to N do begin
z:=a[i];
b:=0;
l:=Pos(' ',z);
p:=l;
Delete(z,1,l);
l:=Pos(' ',z); p:=p+l;
Delete(z,1,l);
Val(copy(z,1,Pos(' ',z)-1),x,l); b:=b+x;
Delete(z,1,Pos(' ',z));
Val(copy(z,1,Pos(' ',z)-1),x,l); b:=b+x;
Delete(z,1,Pos(' ',z));
Val(z,x,l); b:=b+x;
if b=max then begin
z:=a[i];
delete(z,p,length(z)-p+1);
writeln(z);
end;
end;
end. Наверное так!!
Автор ответа:
0
так??
Автор ответа:
0
настя
Автор ответа:
0
вроде как да
Похожие вопросы
Предмет: Литература,
автор: bekdaulet55
Предмет: Английский язык,
автор: markanarchy2000
Предмет: Математика,
автор: angelina46575
Предмет: Математика,
автор: dobrovaal