记录编号 409351 评测结果 AAAAAAAAAA
题目名称 [USACO Mar07] 圆桌会议 最终得分 100
用户昵称 Gravatarユッキー 是否通过 通过
代码语言 C++ 运行时间 0.041 s
提交时间 2017-05-27 15:06:47 内存使用 8.90 MiB
显示代码纯文本
#include <cstdio>
#include <cmath>
#include <iostream>
using namespace std;
int n,k;
int a[1000200];
int f[1000200]={0};
bool vis[1000200]={0};
int cnt=0;
void dfs(int s)
{
    int i;
    for(i=2;i<=n;i++)
    {
        if(!vis[i])
        {
            if(s!=1 && s!=n)
            {
                if(abs(a[i]-f[s-1])<=k)
                {
                    f[s]=a[i];
                    vis[i]=1;
                    dfs(s+1);
                    vis[i]=0;
                    f[s]=0;
                }
            }
            else if(s==n)
            {
                if(abs(a[i]-f[s-1])<=k && abs(a[i]-f[1])<=k)
                    cnt++;
                return;
            }
        }
    }
}

int main()
{
    int i;
    freopen("round.in","r",stdin);
    freopen("round.out","w",stdout);
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++)
        scanf("%d",&a[i]);

    if(n==1)
    {
        printf("1");
        return 0;
    }
    f[1]=a[1];
    dfs(2);
    printf("%d",cnt);
    return 0;
}