ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1100. Таблица результатов

Что не так? Дома нормально - на сервере WA1
Послано gwire 6 авг 2013 00:13
Такой вывод для первого теста подходит, т.к. "говорит" WA2
Console.Write("3 5\n26 4\n22 4\n16 3\n20 3\n1 2\n11 2\n7 1\n");

А этот WA1. В упор... =( .
--------------------------------
using System;
using System.Collections.Generic;

class Program
{
    struct TRec { public int ID, M; }
    static int Comp(TRec x, TRec y)
    {
        if (y.M < x.M) return -1;
        else if (y.M > x.M) return 1;
        else return 0;
    }

    static void Main()
    {
        int N = int.Parse(Console.ReadLine());
        List<TRec> D = new List<TRec>();

        string[] RecStr;
        for (int i = 0; i < N; i++)
        {
            RecStr = Console.ReadLine().Split(' ');

            TRec R = new TRec();
            R.ID = int.Parse(RecStr[0]);
            R.M = int.Parse(RecStr[1]);
            D.Add( R );
        }

        D.Sort(Comp);

        foreach (TRec X in D)
            Console.Write("{0} {1}\n", X.ID, X.M);
        Console.ReadLine();
    }
}
Делаю в C#2012. Неужто в 2010 quick_sort работает по другому?
Re: Что не так? Дома нормально - на сервере WA1
Послано r1d1 6 авг 2013 02:38
hi!
Need to use stable sort. I add extra field - ind, to compare 2 entry.
using System;
using System.Collections.Generic;

class Program
{
    struct TRec { public int ID, M, ind;}
    static int Comp(TRec x, TRec y)
    {
        if (y.M < x.M || (y.M == x.M && y.ind > x.ind))
            return -1;
        if (y.M > x.M || (y.M == x.M && y.ind < x.ind))
            return 1;
        return 0;
    }

    static void Main()
    {
        int N = int.Parse(Console.ReadLine());
        List<TRec> D = new List<TRec>();

        string[] RecStr;
        for (int i = 0; i < N; i++)
        {
            RecStr = Console.ReadLine().Split(' ');

            TRec R = new TRec();
            R.ID = int.Parse(RecStr[0]);
            R.M = int.Parse(RecStr[1]);
            R.ind = i;
            D.Add(R);
        }

        D.Sort(Comp);

        foreach (TRec X in D)
            Console.Write("{0} {1}\n", X.ID, X.M);
        Console.ReadLine();
    }
}