• Во время проведения олимпиады каждый из участников получил свой идентификационный номер – натуральное число. Необходимо отсортировать список участников олимпиады по количеству набранных ими баллов.

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

    Примеры
    входные данные
    3
    101 80
    305 90
    200 14
    выходные данные
    305 90
    101 80
    200 14
    входные данные
    3
    20 80
    30 90
    25 90
    выходные данные
    25 90
    30 90
    20 80

Ответы 1

  • type

      base = record

         id: integer;

         ball: integer;

      end;

    var

      t: text;

      a: array of array of integer;

      n: integer;

      st, tmp: string;

      err: integer := 1;

      database: base;

    begin

      readln(n);

      setlength(a, n);

      for i: integer := low(a) to high(a) do

         setlength(a[i], 2);

      for i: integer := low(a) to high(a) do

      begin

         readln(st);

         tmp := st;

         delete(tmp, pos(' ', tmp, err), tmp.Length - pos(' ', tmp, err) + 1);

         database.id := strtoint(tmp);

         tmp := st;

         delete(tmp, 1, pos(' ', tmp, err));

         database.ball := strtoint(tmp);

         a[i, 0] := database.id;

         a[i, 1] := database.ball;

      end;

      var j: integer := 0;

      assign(t, 'output.txt');

      rewrite(t);

      while (j <= high(a)) do

      begin

         if (j + 1 < high(a)) and (a[j, 1] = a[j + 1, 1]) then

            if (a[j, 0] < a[j + 1, 0]) then begin

               write(t, inttostr(a[j, 0])); write(t, ' '); write(t, inttostr(a[j, 1])); writeln(t,'');

               write(t, inttostr(a[j + 1, 0])); write(t, ' '); write(t, inttostr(a[j + 1, 1])); writeln(t,'');

            end else begin

               write(t, inttostr(a[j + 1, 0])); write(t, ' '); write(t, inttostr(a[j + 1, 1])); writeln(t,'');

               write(t, inttostr(a[j, 0])); write(t, ' '); write(t, inttostr(a[j, 1])); writeln(t,'');

            end;

         if (j+1=n) then

            write(t, inttostr(a[j, 0])); write(t, ' '); write(t, inttostr(a[j, 1])); writeln(t,'');

         inc(j, 2);

      end;

      close(t);

    end.

  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years