結果
問題 | No.9 モンスターのレベル上げ |
ユーザー |
![]() |
提出日時 | 2018-03-01 10:05:06 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 175 ms / 5,000 ms |
コード長 | 1,511 bytes |
コンパイル時間 | 978 ms |
コンパイル使用メモリ | 72,092 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-24 00:25:05 |
合計ジャッジ時間 | 3,377 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 20 |
ソースコード
#include <iostream> #include <vector> #include <map> #include <queue> using namespace std; struct Struct{ int count,level; bool operator<(const Struct &other)const{ if(level==other.level) return count>other.count; else return level>other.level; } }; int main(){ int N; cin >>N; vector <int>b; vector <Struct> a; priority_queue <Struct> aaa; for(int i=0 ; i<N ; i++ ){ Struct x;cin >> x.level; x.count=0; a.push_back(x); aaa.push(x); }for(int i=0 ; i<N ; i++ ){ int x;cin >> x; b.push_back(x/2); } int Max=2000000000; for(int i=0 ; i<N ; i++ ){ priority_queue<Struct> now=aaa; int counter=0,tmax=0; while(counter!=N){ int l=(i+counter)%N; Struct next; next.level=now.top().level+b[l]; next.count=now.top().count+1; now.pop(); now.push(next); counter++; if(tmax<next.count)tmax=next.count; // if(Max<=tmax)break; } //:w cout << tmax << " "<<i << endl; if(Max>tmax)Max=tmax; } cout <<Max<<endl; return 0; }