結果
問題 | No.484 収穫 |
ユーザー |
![]() |
提出日時 | 2025-01-29 22:58:49 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 46 ms / 3,000 ms |
コード長 | 741 bytes |
コンパイル時間 | 1,575 ms |
コンパイル使用メモリ | 161,248 KB |
実行使用メモリ | 35,104 KB |
最終ジャッジ日時 | 2025-01-29 22:58:52 |
合計ジャッジ時間 | 3,134 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 |
ソースコード
#include <bits/stdc++.h> #define int long long using namespace std; int n; int a[2005]; int f[2005][2005]; void read(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } } void work(){ memset(f,0x3f,sizeof(f)); f[1][n]=f[n][1]=0; for(int l=n;l>1;l--){ for(int i=1;i+l-1<=n;i++){ int j=i+l-1; f[i][j]=min(f[i][j],f[j][i]+(j-i-1)); f[j][i]=min(f[j][i],f[i][j]+(j-i-1)); f[i+1][j]=min(f[i+1][j],max(f[i][j],a[i])+1); f[j-1][i]=min(f[j-1][i],max(f[j][i],a[j])+1); } } int ans=f[0][0]; for(int i=1;i<=n;i++){ ans=min(ans,max(f[i][i],a[i])); } cout<<ans<<endl; } signed main(){ read(); work(); return 0; }