Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2011, 09:25   #1
Эльзара
Новичок
Джуниор
 
Регистрация: 08.12.2011
Сообщений: 2
По умолчанию Олимпиада MCA

Входной файл test.in
Выходной файл test.out
Ограничение по времени 1 секунда на тест
Ограничение по памяти 16 мегабайт

Всякому известен регламент ACM, по этому регламенту проходит Всероссийская командная олимпиада школьников по программированию и информатике. Менее известен альтернативный регламент MCA. Согласно этому регламенту каждая задача оценивается определённым количеством баллов. Правильно решённая задача даёт команде именно столько баллов. Выигрывает команда, набравшая наибольшее количество баллов. Если две или более команд набирают одинаковое количество баллов, то выигрывает команда, решившая наименьшее количество задач. Если и таких команд оказывается несколько, то выигрывает команда, имеющая наименьшее количество попыток сдать задачи (как успешных, так и безуспешных). Если по-прежнему победитель не определился, то выигрывает команда с наименьшим номером. Ваша задача - по итогам MCA турнира составить итоговую таблицу.

Формат входного файла.
В первой строке входного файла содержатся два целых числа T - количество команд и P - количество задач (1 ≤ T ≤ 10, 1 ≤ P ≤ 10). Команды пронумерованы от 1 до T, задачи названы первыми P заглавными буквами латинского алфавита. Во второй строке записаны P целых чисел из отрезка [1,100] - количество баллов, которым оценены задачи. Третья строка содержит одно целое число S (1 ≤ S ≤ 200) - суммарное количество сдач за время турнира. В следующих S строках записаны результаты сдач в формате
<номер команды> <код задачи> A|R
буква A (Accepted) означает, что задача принята, буква R (Rejected) означает, что задача не принята. Данные в этих строках разделены ровно одним пробелом.

Формат выходного файла.
Запишите в выходной файл итоговую таблицу турнира. Таблица должна занимать T строк, в каждой из которых должен быть записан номер команды и набранное командой количество баллов.

Примеры файлов входных и выходных данных:
test.in
2 2
5 10
2
1 A A
2 B A

test.out
2 10
1 5
Эльзара вне форума Ответить с цитированием
Старый 08.12.2011, 10:26   #2
Rimmaa
Новичок
Джуниор
 
Регистрация: 08.12.2011
Сообщений: 1
По умолчанию

Напишите, пожалуйста программу к этой задаче
Rimmaa вне форума Ответить с цитированием
Старый 08.12.2011, 10:33   #3
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Уважаемая Эльзара/Rimmaa/Ильнур/(продолжите список сами).
Тут обсуждают решения и помогают решить, а не решают двоечникам. Идите все разом в раздел Фриланс..
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 08.12.2011, 10:46   #4
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Цитата:
Сообщение от Rimmaa Посмотреть сообщение
Напишите, пожалуйста программу к этой задаче
Ты путаешь. На форумах отвечают на вопросы, а не пишут программы. Пишут программы в другом месте и за деньги.
Son Of Pain вне форума Ответить с цитированием
Старый 08.12.2011, 11:31   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
Const TMax=10;
       Pmax='J';
       fn='input.txt';
       fn2='output.txt';
var  T:integer;{количество команд}
     P:integer;{количество задач}
     S:Integer;
     Ball:Array['A'..Pmax] of integer;{оценки за задачи}
     Total:Array[1..3,1..TMax] of Integer;
     f:text;
     buf:string;
     e,i,nc:integer;
     ec,bc:char;
     Pc:char;
     fl:boolean;
begin
  { TODO -oUser -cConsole Main : Insert code here }
  Assign(f,fn);Reset(f);
{считываем Т и Р}
  readln(f,buf);
  val(copy(buf,1,pos(' ',buf)-1),T,e);
  delete(buf,1,pos(' ',buf));
  val(buf,P,e);
  readln(f,buf);
{считываем баллы}
  Pc:=chr(ord('A')+p-1);
  for ec:='A' to Pc do begin
  if pos(' ',buf)<>0 then begin
    val(copy(buf,1,pos(' ',buf)-1),Ball[ec],e);
    delete(buf,1,pos(' ',buf)); end
  else val(buf,ball[ec],e);
  end;
{считываем S}
  readln(f,buf);
  val(buf,s,e);
for i:=1 to T do begin
Total[1,i]:=i;
Total[2,i]:=0;
Total[3,i]:=0;
end;
{считываем итоговую таблицу}
for i:=1 to s do
begin
Readln(f,buf);
val(copy(buf,1,pos(' ',buf)-1),nc,e);
delete(buf,1,pos(' ',buf));
ec:=copy(buf,1,pos(' ',buf)-1)[1];
delete(buf,1,pos(' ',buf));
bc:=buf[1];
if bc='A' then
Total[2,nc]:= Total[2,nc]+Ball[ec];
Total[3,nc]:=Total[3,nc]+1;
end;
close(f);
{Сортировка Итогов}
fl:=true;
while fl do begin
fl:=false;
for i:=1 to T-1 do
{баллы по убыванию,при равенстве баллов количетво попыток по возрастанию}
if (Total[2,i]<Total[2,i+1]) or ((Total[2,i]=Total[2,i+1])and (Total[3,i]>Total[3,i+1])) then
begin
for nc := 1 to 3 do begin
e:=Total[nc,i];
Total[nc,i]:=Total[nc,i+1];
Total[nc,i+1]:=e; end;
fl:=true;
end;
end;
Assign(f,fn2);Rewrite(f);
for e:=1 to T do
writeln(f,Total[1,e],' ',Total[2,e]);
close(f);
end.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 08.12.2011 в 15:54.
Mad_Cat вне форума Ответить с цитированием
Старый 08.12.2011, 13:19   #6
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Mad_Cat, полностью солидарен) На олимпиаде места своими мозгами надо зарабатывать, а чтобы будущему поколению было над чем поразмыслить, после олимпиады можно и решение выложить)
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Олимпиада Ильнур7 Паскаль, Turbo Pascal, PascalABC.NET 3 08.12.2011 18:35
олимпиада lost9306 Паскаль, Turbo Pascal, PascalABC.NET 1 17.04.2010 13:10
Олимпиада Cannibal Microsoft Office Access 0 25.03.2010 18:16
Олимпиада Patrick Паскаль, Turbo Pascal, PascalABC.NET 12 12.10.2009 13:36