公式

A - フィギュアスケート予選 / Figure Skating Qualifying Round 解説 by kyopro_friends


問題文の指示通りに得点を計算すればよいです。

合計や最大値・最小値を求めるには、for 文を用いてもよいですが、標準ライブラリとして用意されている関数を用いるのが簡単です。

実装例 (C++)

#include<bits/stdc++.h>
using namespace std;

int main(){
  int n, m, k;
  cin >> n >> m >> k;

  int ans = 0;
  for(int i=0; i<n; i++){
    vector<int> s(m);
    for(int j=0; j<m; j++) cin >> s[j];
    int sum = accumulate(s.begin(), s.end(), 0);
    int min = *min_element(s.begin(), s.end());
    int max = *max_element(s.begin(), s.end());
    int score;
    if(m <= 2){
      score = sum / m;
    }else{
      score = (sum - min - max) / (m - 2);
    }
    if(score < k){
      ans++;
    }
  }
  cout << ans << endl;
}

実装例 (Python)

N, M, K = map(int, input().split())

ans = 0
for _ in range(N):
  S = list(map(int, input().split()))
  if M <= 2:
    score = sum(S) // M
  else:
    score = (sum(S)-min(S)-max(S)) // (M-2)
  if score < K:
    ans += 1
print(ans)

投稿日時:
最終更新: