寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

AtCoder Problems in C++ #B - サッカー (Soccer)

第11回日本情報オリンピック 予選(過去問)から、その提出コードの解答例です。
AtCoderとは、コンテストを通じて、プログラミングやアルゴリズムを学習するサービスです。
atcoder.jp
プログラミングコンテストとは、「与えられた問題をいかに素早く、正確に」解くことができるかを競うものです。
競技プログラミング」を略して、「競プロ」などと呼ばれています。

#B - サッカー (Soccer)

atcoder.jp

僕が作成、提出したコードは、以下のとおりです。

/*
AtCoder Problems in C++
#B - サッカー (Soccer)
https://atcoder.jp/contests/joi2012yo/tasks/joi2012yo_b
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  vector<int> cnt(10001,0);
  int n;
  cin>>n;
  for(int i=0;i<n*(n-1)/2;i++){
    int a,b,c,d;
    cin>>a>>b>>c>>d;
    a--;
    b--;
    if(c>d){
      cnt[a]+=3;
    }else if(c<d){
      cnt[b]+=3;
    }else{
      cnt[a]++;
      cnt[b]++;
    }
  }
  vector<int> v;
  for(int i=0;i<n;i++){
    v.push_back(cnt[i]);
  }
  sort(v.begin(),v.end());
  for(int i=0;i<n;i++){
    cout<<n-(upper_bound(v.begin(),v.end(),cnt[i])-v.begin())+1<<endl;
  }
  return 0;
}