记录编号 |
84440 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2010冲刺十三]迷之阶梯 |
最终得分 |
100 |
用户昵称 |
1azyReaper |
是否通过 |
通过 |
代码语言 |
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;
}