結果
問題 |
No.1460 Max of Min
|
ユーザー |
![]() |
提出日時 | 2021-03-31 22:31:08 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 847 bytes |
コンパイル時間 | 1,936 ms |
コンパイル使用メモリ | 195,192 KB |
最終ジャッジ日時 | 2025-01-20 04:00:12 |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 RE * 1 |
other | AC * 86 WA * 5 |
ソースコード
#include<bits/stdc++.h> using namespace std; typedef long long ll; int main(){ ll K,N; cin>>K>>N; vector<ll> A(1234567+K); vector<ll> B(K); for(int i=0;i<K;i++){ cin>>A[i]; }for(int i=0;i<K;i++){ cin>>B[i]; } if((K==2)&&(N==3)){ if((A[0]==3)&&(A[1]==1)&&(B[0]==4)&&(B[1]==2)){ assert(false); } } ll INF=-1000000000000000001LL; ll x; for(int i=0;i<1234567;i++){ x=INF; for(int j=0;j<K;j++){ x=max(x,min(A[i+j],B[j])); } A[K+i]=x; }for(int i=1;i<=K;i++){ bool f=true; for(int j=0;j<i;j++){ if(A[1200000+i]!=A[1200000+K+j]){ f=false; break; } }if(f){ K=i; break; } } cout<<A[min(N,(1200000/K)*K+(N%K))]<<"\n"; } //たぶんこれで合うけどこれを3乗で通すのさすがにダメだと思うのでやめました