记录编号 47176 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010冲刺十三]迷之阶梯 最终得分 100
用户昵称 GravatarTBK 是否通过 通过
代码语言 C++ 运行时间 0.026 s
提交时间 2012-10-31 08:51:11 内存使用 0.32 MiB
显示代码纯文本
#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <set>
#include <queue>
#include <algorithm>
#define MAXN 0x7fffffff
using namespace std;
long long a[200],b,c,d,f[201],l,m,n;
int main(void)
{
    freopen("ladder.in","r",stdin);
    freopen("ladder.out","w",stdout);
    scanf("%d",&b);
    for (c=0;c<b;c++) scanf("%d",&a[c]);
    for (c=1;c<b;c++)
    {
        l=(long long)pow(2.0,(double)(c-1));
        if (a[0]+l>MAXN) break;
        if (a[c]>a[0]+l) 
        {
            printf("-1");
            return 0;
        }
    }
    for (c=1;c<b;c++) f[c]=MAXN;
    for (c=1;c<b;c++)
        for (d=0;d<c;d++)
        {
            l=(long long)pow(2.0,(double)d);
            for (m=0;m<c-d;m++)
                if (a[m]+l>=a[c]) f[c]=f[c]<f[m+d]+d+1?f[c]:f[m+d]+d+1;
        }
    printf("%d",f[b-1]);
    fclose(stdin);
    fclose(stdout);
    return 0;
}