ログイン
新規登録
AtsuoCoder Waseda Tour Finals 2025
読込中…
Home
Tasks
Clar
Submissions
Standings
提出 7c83ccd8-bb5f-49ad-a87f-8dcf60be6d07
コード
#include <bits/stdc++.h> using namespace std; using ll = long long; int main() { int n,m; ll h; cin >> n >> m >> h; vector<pair<ll,ll>>prob(n); for (int i = 0;i < n;i++){ ll d,t; cin >> d >> t; prob[i] = {d,t}; } auto can = [&](ll x) -> bool{ vector<ll> diffs; for(auto [d,t] : prob){ if(t <= x)diffs.push_back(d); } if((int)diffs.size() < m)return false; nth_element(diffs.begin(),diffs.begin()+m,diffs.end()); ll sum = 0; for(int i = 0;i < m;i++)sum += diffs[i]; return sum <= h; }; ll lo = 1,hi = 1e9,ans = -1; while(lo <= hi){ ll mid = (lo + hi) / 2; if(can(mid)){ ans = mid; hi = mid - 1; }else{ lo = mid + 1; } } cout << ans << endl; }
結果
問題
点数
言語
結果
実行時間
メモリ
G - Contest
150
C++
AC
169 ms
8784 KiB