profile
Размещено 4 года назад по предмету Информатика от mrproper37

В этом году третий раз одна известная компания проводит соревнование по программированию искусственного интеллекта для игровых стратегий. В этот раз участникам предложили написать искусственный интеллект для управления командой хоккеистов. После проведения очередного тура, Вася решил, что для дальнейшего улучшения своей стратегии необходимо просмотреть все бои с теми соперниками, которые сопоставимы с ним по проценту побед. Задана таблица результатов боев в прошедшем раунде. В каждой строке записаны ник соперника Васи и итоговый счет. Первое число показывает, сколько шайб забила стратегия Васи, вторая — сколько шайб забила стратегия соперника. Необходимо подсчитать процент побед каждого участника и вывести результат, отсортировав его в порядке неубывания процентов. Если процент побед оказался одинаковым, то нужно упорядочить записи по никам лексикографически.

Формат ввода
В первой строке входного файла записано целое число N (1 ≤ N ≤ 105) — количество записей в таблице. В каждой из последующих N строк через пробел записаны ник соперника, сколько забила Васина команда и сколько забил соперник. Гарантируется, что каждый ник — непустая строка, длина которой не превосходит 10 символов и состоящая из строчных букв латинского алфавита. Так же известно, что никто из участников не забивал больше 1000 голов.

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

Пример 1
Ввод
1
tpusct 1 60
Вывод
1
tpusct 0.0000000000
Пример 2
Ввод
35
v 86 45
v 77 90
pmuehueqm 74 40
mslrsnshk 71 13
fy 43 1
mslrsnshk 76 87
gwpr 37 78
mxzsoel 4 39
pmuehueqm 78 75
v 59 45
gwpr 25 52
bjyaiptxmw 48 48
mxzsoel 13 76
givnyujn 38 70
mslrsnshk 58 66
givnyujn 33 66
pmuehueqm 100 53
pmuehueqm 80 17
pmuehueqm 2 48
mxzsoel 68 4
bjyaiptxmw 43 40
be 81 92
be 34 55
bjyaiptxmw 88 5
mslrsnshk 49 82
givnyujn 91 30
bjyaiptxmw 33 19
bjyaiptxmw 46 17
i 70 35
givnyujn 38 55
pmuehueqm 7 81
mxzsoel 0 9
i 64 30
v 80 42
mslrsnshk 79 64
Вывод
10
be 0.0000000000
gwpr 0.0000000000
givnyujn 25.0000000000
mxzsoel 25.0000000000
mslrsnshk 40.0000000000
pmuehueqm 66.6666666667
v 75.0000000000
bjyaiptxmw 80.0000000000
fy 100.0000000000
i 100.0000000000 ​

  1. Ответ на вопрос
    Ответ на вопрос дан lisovA2005

    Ответ:

    PascalABC.NET 3.5.1

    program D_contest;

    type

     TStat = record

       nick: string;

       wins, battles: integer;

       proc: real;

     end;

    var

     N, i, num: integer;

     str: array of string;

     stat: array of TStat;

     nick: string;

    function found(ni_ck: string): integer;

    begin

     found := -1;

     for var e := 0 to Length(stat) - 1 do

     begin

       if stat[e].nick = ni_ck then  

       begin

         found := e;

         break;

       end;

     end;

    end;

    var

     v_pts, e_pts, l_e: integer;  

     F: textfile;

     k: real;

     s: string;

    begin

     Assign(F, 'input.txt');

     Reset(F);

     readln(F, n);

     SetLength(str, n);

     SetLength(stat, 1);

     for i := 0 to n - 1 do

     begin

       readln(F, str[i]);    

       //get enemy_nick

       nick := Copy(str[i], 1, Pos(' ', str[i]) - 1);    

       Delete(str[i], 1, Pos(' ', str[i]));

       

       if (stat[0].nick <> '') then

       begin

         num := found(nick);

         if (num = -1) then //not found

         begin

           l_e := Length(stat);

           SetLength(stat, l_e + 1);

           num := l_e;

           stat[num].nick := nick;

         end;

       end

         else

       begin

         stat[0].nick := nick;

       end;

       

       stat[num].battles += 1;

       

         //get Vania_points

       v_pts := StrToInt(Copy(str[i], 1, Pos(' ', str[i])));    

       Delete(str[i], 1, Pos(' ', str[i]));

       

         //get enemy_points

       e_pts := StrToInt(str[i]);

       

       if v_pts > e_pts Then

         stat[num].wins += 1;

     end;

     Close(F);        

     

     //вычисляю процент побед

     for i := 0 to Length(stat) - 1 do

     begin

       stat[i].proc := stat[i].wins / stat[i].battles;  

     end;

     

     //сортировка по процентам

     for i := 0 to Length(stat) - 2 do  

     begin

       for var j := 0 to Length(stat) - i - 2 do  

       begin

         if stat[j].proc > stat[j + 1].proc then  

         begin

           k := stat[j].proc;

           stat[j].proc := stat[j + 1].proc;

           stat[j + 1].proc := k;

           

           s := stat[j].nick;

           stat[j].nick := stat[j + 1].nick;

           stat[j + 1].nick := s;

         end;

       end;

     end;

     

     //сортировка по алфавиту

     for i := 0 to Length(stat) - 2 do  

     begin

       for var j := 0 to Length(stat) - i - 2 do  

       begin

         if (stat[j].proc = stat[j + 1].proc) and (stat[j].nick > stat[j + 1].nick) then  

         begin

           k := stat[j].proc;

           stat[j].proc := stat[j + 1].proc;

           stat[j + 1].proc := k;

           

           s := stat[j].nick;

           stat[j].nick := stat[j + 1].nick;

           stat[j + 1].nick := s;

         end;

       end;

     end;

     

     writeln(Length(stat));

     for i := 0 to Length(stat) - 1 do

     begin

       write(stat[i].nick, ' ');

       writeln(stat[i].proc * 100:0:6);

     end;

    end.

    Объяснение:

    Смотри код

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.