记录编号 | 84440 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [NOIP 2010冲刺十三]迷之阶梯 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.076 s | ||
提交时间 | 2013-12-13 20:02:30 | 内存使用 | 40.58 MiB | ||
#include <fstream> #include <cstdio> #include <cstdlib> using namespace std; /* Write:XPK Date:13-12-13 Lang:C++ Thank:Truth.Cirno */ ifstream fin("ladder.in"); ofstream fout("ladder.out"); int a[210],f[40010][210]; bool t[41010][210]; int main() { int i,j,k,n,c=0,ct=0; fin>>n; if(n==1){ fout<<"0"<<endl; return 0; } for(i=1;i<=n;i++) fin>>a[i]; f[0][1]=1; t[0][1]=true; for(i=1;;i++){ ct=c; for(j=1;j<=n;j++){ for(k=1;k<j;k++){ if(t[i-1][k]){ if(a[j]-a[k]<=(1<<(f[i-1][k]-1))){ f[i][j]=1; if (!t[i][j]){ t[i][j]=true; c++; } } } } if(t[i-1][j+1]){ f[i][j]=max(f[i][j],f[i-1][j+1]+1); if(!t[i][j]){ t[i][j]=true; c++; } } } if(t[i][n]){ fout<<i<<endl; break; } if (c==ct||i>=40000){ fout<<"-1"<<endl; break; } } fin.close(); fout.close(); return 0; }