結果
問題 | No.9 モンスターのレベル上げ |
ユーザー |
![]() |
提出日時 | 2023-03-28 00:58:26 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 316 ms / 5,000 ms |
コード長 | 851 bytes |
コンパイル時間 | 602 ms |
コンパイル使用メモリ | 74,672 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-19 18:36:00 |
合計ジャッジ時間 | 4,148 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 20 |
ソースコード
#include <iostream> #include <queue> #include <vector> using namespace std; struct E{ long long int count; long long int level; bool operator<(const E& e)const{ if(level!=e.level)return level>e.level; return count>e.count; } }; long long int xs[1501]; priority_queue<E> pq; vector<E> vs; int main() { int n; cin>>n; for(int i=0;i<n;i++){ E e; e.count=0; cin>>e.level; vs.push_back(e); } for(int i=0;i<n;i++){ cin>>xs[i]; } int ans=n; for(int s=0;s<n;s++){ int ans2=0; for(int i=0;i<n;i++){ pq.push(vs[i]); } for(int i=0;i<n;i++){ E e=pq.top(); pq.pop(); e.count+=1; e.level+=xs[(s+i)%n]/2; pq.push(e); if(ans2<e.count)ans2=e.count; //cout<<e.count<<" "<<e.level<<endl; } //cout<<ans2<<endl; if(ans>ans2)ans=ans2; while(pq.size()>0){ pq.pop(); } } cout<<ans<<endl; return 0; }