2010年9月1日水曜日

AOJ Volume 1 Problem 0196 : Baseball Championship


#include <iostream>
using namespace std;

int main()
{
    int n;
    while (cin >> n, n)
    {
        char name[10];
        int win[10] = {0};
        int lose[10] = {0};

        for (int i = 0; i < n; i++)
        {
            cin >> name[i];
            for (int j = 0; j < n - 1; j++)
            {
                int s;
                cin >> s;
                if (s == 0)
                    win[i]++;
                if (s == 1)
                    lose[i]++;
            }
        }

        for (int i = n - 1; i > -1; i--)
            for (int j = 0; j < n - i; j++)
                for (int k = 0; k < n; k++)
                    if (win[k] == i && lose[k] == j)
                        cout << name[k] << endl;

    }

    return 0;
}

本来,ソートを行うべきですが,入力されるチーム数が最大10と少ないため,
ソートせずに,全勝のチーム,1敗 0引き分けのチームといった順番にヒット?させています.
絶対無駄な処理があり,実行速度は若干遅いだろうと思いますが,
コード自体がスッキリするので,これもありなんじゃないかと思います.

0 件のコメント:

コメントを投稿