2010年9月1日水曜日

AOJ Volume 1 Problem 0196 : Baseball Championship


  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. int main()  
  5. {  
  6.     int n;  
  7.     while (cin >> n, n)  
  8.     {  
  9.         char name[10];  
  10.         int win[10] = {0};  
  11.         int lose[10] = {0};  
  12.   
  13.         for (int i = 0; i < n; i++)  
  14.         {  
  15.             cin >> name[i];  
  16.             for (int j = 0; j < n - 1; j++)  
  17.             {  
  18.                 int s;  
  19.                 cin >> s;  
  20.                 if (s == 0)  
  21.                     win[i]++;  
  22.                 if (s == 1)  
  23.                     lose[i]++;  
  24.             }  
  25.         }  
  26.   
  27.         for (int i = n - 1; i > -1; i--)  
  28.             for (int j = 0; j < n - i; j++)  
  29.                 for (int k = 0; k < n; k++)  
  30.                     if (win[k] == i && lose[k] == j)  
  31.                         cout << name[k] << endl;  
  32.   
  33.     }  
  34.   
  35.     return 0;  
  36. }  
本来,ソートを行うべきですが,入力されるチーム数が最大10と少ないため,
ソートせずに,全勝のチーム,1敗 0引き分けのチームといった順番にヒット?させています.
絶対無駄な処理があり,実行速度は若干遅いだろうと思いますが,
コード自体がスッキリするので,これもありなんじゃないかと思います.

0 件のコメント:

コメントを投稿