公式
B - ずば抜けた得点 / Outstanding Score 解説
by
B - ずば抜けた得点 / Outstanding Score 解説
by
kyopro_friends
ラウンドごとに独立に \(T\) 回問題を解きます。
ずば抜けている選手がもし存在するなら、そのラウンドの最高得点の選手です。ずば抜けている選手以外の得点の最大値は、全体で \(2\) 番目に高い得点です。
よって、各ラウンドについて、得点の最大値 \(x\) と高い方から \(2\) 番目 \(y\) について \(x\geq 2y\) であるかを調べればよいです。 選手の得点をソートすることで \(O(N\log N)\) で判定することができます。
実装例 (C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int n, t;
cin >> n >> t;
int ans = 0;
for(int i=0; i<t; i++){
vector<int>s(n);
for(int j=0; j<n; j++) cin >> s[j];
sort(s.rbegin(), s.rend()); //降順ソート
if(s[0] >= 2 * s[1]){
ans++;
}
}
cout << ans << endl;
}
実装例 (Python)
N, T = map(int, input().split())
ans = 0
for _ in range(T):
S = list(map(int, input().split()))
S.sort()
if S[-1] >= 2 * S[-2]:
ans += 1
print(ans)
投稿日時:
最終更新:
