公式
B - プログラミングコンテストの順位表 / Scoreboard of a Programming Contest 解説
by
B - プログラミングコンテストの順位表 / Scoreboard of a Programming Contest 解説
by
kyopro_friends
印刷ページ
問題文の指示通りの順序でソートしましょう。順位順は (スコア, レート, 参加番号の \(-1\) 倍) の \(3\) つ組を降順にソートしたものと一致するので、標準のソート関数を用いてソートすることができます。計算量は \(O(N\log N)\) になります。
(「スコアの降順、タイならレートの降順、タイなら参加番号の昇順」と、最後だけ昇順になっているため、全て降順となるように、参加番号を \(-1\) 倍しています)
実装例 (C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
vector<array<int, 3>> data;
for(int i=1; i<=n ;i++){
int a, b;
cin >> a >> b;
data.push_back({b, a, -i});
}
sort(data.rbegin(), data.rend()); // 降順ソート
for(auto [b, a, i]: data){
cout << -i << endl;
}
}
実装例 (Python)
N = int(input())
data = []
for i in range(1, N+1):
a, b = map(int, input().split())
data.append((b, a, -i))
data.sort(reverse=True) # 降順ソート
for _, _, i in data:
print(-i)
投稿日時:
最終更新:
