結果
問題 | No.1739 Princess vs. Dragoness (& AoE) |
ユーザー |
|
提出日時 | 2023-04-11 14:07:49 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 762 ms / 3,000 ms |
コード長 | 1,093 bytes |
コンパイル時間 | 799 ms |
コンパイル使用メモリ | 84,816 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-10-07 06:49:43 |
合計ジャッジ時間 | 16,523 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 40 |
ソースコード
#include<cstdio> #include<cstring> #include<iostream> #include<cmath> #include<ctime> #include<string> #include<algorithm> #include<vector> #include<queue> #include<stack> #include<map> using namespace std; typedef long long LL; const int MR=1e5+10; int n,A,B,X,Y,h[MR]; int b[MR]; bool cmp(int x,int y){ return x%X>y%X; } bool check(int k){ int a=A; LL sum=0; int cnt=0; for(int i=1;i<=n;i++){ if(h[i]<=k) continue; cnt++; b[cnt]=h[i]-k; } sort(b+1,b+cnt+1,cmp); for(int i=1;i<=cnt;i++){ if(a>=b[i]/X){ a-=b[i]/X; b[i]%=X; } else if(a>0){ b[i]-=a*X; a=0; break; } } for(int i=a+1;i<=cnt;i++){ sum+=b[i]; } return sum<=1ll*B*Y; } int main(){ cin>>n>>A>>B>>X>>Y; for(int i=1;i<=n;i++){ cin>>h[i]; } int l=-1,r=1e9+10; while(l+1<r){ int mid=(l+r)/2; if(check(mid)){ r=mid; } else{ l=mid; } } cout<<r<<endl; return 0; }