Official

C - 遠足のおやつ / Field Trip Snacks Editorial by kyopro_friends


買うおやつの種類数を増やすには、安いおやつから順に貪欲に買うのが最適です。よって、 \(P\) をソートして、安い方から順に買えるなら買うとすればよいです。

実装例 (C++)

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

int main(){
  int n, t;
  long long e;
  cin >> n >> t >> e;
  vector<int>p(n);
  for(int i=0; i<n; i++) cin >> p[i];
  sort(p.begin(), p.end());

  int ans = 0;
  for(int i=0; i<n; i++){
    if((long long)p[i] * t <= e){
      ans++;
      e -= (long long)p[i] * t;
    }
  }
  cout << ans << endl;
}

実装例 (Python)

N, T, E = map(int, input().split())
P = list(map(int, input().split()))
P.sort()

ans = 0
for p in P:
  if p * T <= E:
    ans += 1
    E -= p * T

print(ans)

posted:
last update: