比赛 20121030 评测结果 AAAAAAAAAA
题目名称 迷之阶梯 最终得分 100
用户昵称 QhelDIV 运行时间 0.035 s
代码语言 C++ 内存使用 3.28 MiB
提交时间 2012-10-30 21:59:48
显示代码纯文本
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream fin("ladder.in");
ofstream fout("ladder.out");
int N,A[201],f[201];
int main()
{
int i,j,k;
	fin>>N;
	for(i=1;i<=N;i++)
		fin>>A[i];
	f[1]=0;
	for(i=2;i<=N;i++)
	{
		if(A[i]-A[i-1]==1)
			f[i]=f[i-1]+1;
		else
			f[i]=~0u>>1;
		for(j=1;j<=i;j++)
			for(k=j+1;k<i;k++)
				if((1<<(k-j))>=A[i]-A[j])
					f[i]=min(f[i],f[k]+k-j+1);
	}
	if(f[N]<0)
		fout<<-1<<endl;
	else
		fout<<f[N]<<endl;
	fin.close();
	fout.close();
	return 0;
}