baru003のブログ

baruの雑記兼備忘録

AOJ 0566

・問題リンク Soccer

・コメント
この問題は2時間以上考えたかもしれません(笑)
c++の知識がほとんど無い中で既存のライブラリの恩恵の使い方もしらず使おうとして時間喰ってしまっていました。。
最終的にはゴリ押しのテクニック皆無で解きましたw
ポイントは
順位はチーム数だけあり、勝ち点の比較を行った結果rank--;していく感じにしたところ上手くいきました。

・ソース

#include<iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    int team[n];//point
    int rank;
    //ポイント初期化
    for(int i=0;i<n;i++)team[i]=0;
    //point judge
    for(int i=0;i<(n*(n-1))/2;i++){
        int a,b,c,d;
        cin>>a>>b>>c>>d;
        if(c>d){
            team[a-1]+=3;
            team[b-1]+=0;
        }else if(c==d){
            team[a-1]+=1;
            team[b-1]+=1;
        }
        else{
            team[a-1]+=0;
            team[b-1]+=3;
        }
    }
    //ソート順位をrankに保持
    for(int i=0;i<n;i++){
        rank=n;
        for(int j=0;j<n;j++){
            if(team[i]>=team[j]&&i!=j){
                rank--;
            }
        }
        cout<<rank<<endl;
    }
    return 0;
}