結果
問題 | No.1739 Princess vs. Dragoness (& AoE) |
ユーザー |
![]() |
提出日時 | 2023-05-29 22:03:43 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 954 ms / 3,000 ms |
コード長 | 938 bytes |
コンパイル時間 | 1,291 ms |
コンパイル使用メモリ | 109,652 KB |
最終ジャッジ日時 | 2025-02-13 16:09:47 |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 40 |
ソースコード
#include <iostream> #include <vector> #include <cmath> #include <map> #include <set> #include <iomanip> #include <queue> #include <algorithm> #include <numeric> #include <deque> #include <complex> #include <cassert> using namespace std; using ll = long long; ll N, A, B, X, Y; vector<ll> H; bool solve(ll c){ ll S=0, h, a=A; priority_queue<ll> que; for (int i=0; i<N; i++){ if (H[i]-c > 0) que.push(H[i]-c); } while(!que.empty() && a){ h = que.top(); que.pop(); h -= X; a--; if (h > 0) que.push(h); } while(!que.empty()){ h = que.top(); S += h; que.pop(); } return S <= B*Y; } int main(){ cin >> N >> A >> B >> X >> Y; H.resize(N); for (int i=0; i<N; i++) cin >> H[i]; ll l=-1, r=1e9, c; while(r-l>1){ c = (l+r)/2; if (solve(c)) r=c; else l=c; } cout << r << endl; }