結果
問題 |
No.1460 Max of Min
|
ユーザー |
|
提出日時 | 2021-03-31 22:03:46 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 956 bytes |
コンパイル時間 | 1,044 ms |
コンパイル使用メモリ | 79,344 KB |
実行使用メモリ | 11,264 KB |
最終ジャッジ日時 | 2024-12-15 18:52:04 |
合計ジャッジ時間 | 10,924 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 44 WA * 47 |
コンパイルメッセージ
main.cpp:38:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type] 38 | main() | ^~~~
ソースコード
#include<iostream> #include<algorithm> #include<vector> using namespace std; long N; int K; long A[1010],B[1010]; vector<long>succ(vector<long>F) { long nxt=-9e18; for(int i=0;i<K;i++)nxt=max(nxt,min(F[i],B[i])); vector<long>ret(F.begin()+1,F.end()); ret.push_back(nxt); return ret; } vector<long>dbl(vector<long>F) { vector<vector<long> >A(K); for(int i=0;i<K;i++) { A[i]=F; F=succ(F); } vector<long>ret(K,(long)-9e18); for(int i=0;i<K;i++)for(int j=0;j<K;j++) { if(B[i]<=B[j]) { ret[i]=max(ret[i],A[i][j]); } if(B[i]>=B[j]) { ret[j]=max(ret[j],A[i][j]); } } return ret; } main() { cin>>K>>N; for(int i=0;i<K;i++)cin>>A[i]; for(int i=0;i<K;i++)cin>>B[i]; if(N<K) { cout<<A[N]<<endl; return 0; } vector<long>F(A,A+K);//K int w=0; long T=K; while(N>=T<<w)w++; w--; while(N>=(T+1)<<w) { T++; F=succ(F); } for(int I=w-1;I>=0;I--) { F=dbl(F); if(N>>I&1)F=succ(F); } cout<<succ(F)[K-1]<<endl; }