比赛 普及组2016模拟练习3 评测结果 AAAAAAAAAA
题目名称 圆桌会议 最终得分 100
用户昵称 Lethur 运行时间 0.034 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2016-11-15 19:14:34
显示代码纯文本
#include<cstdio>
#include<cmath>
#include<iostream>
#define MAXN 15
using namespace std;
int n,k;
int N[MAXN]={0};
bool vis[MAXN]={0};
int M[MAXN]={0};
int ans=0;
inline void dfs(int u)
{
	if(u>1)
	{
		if(abs(N[M[u]]-N[M[u-1]])>k)
		return ;
	}
	if(u==n)
	{
		if(abs(N[M[1]]-N[M[n]])>k)
		return ;
		else
		ans++;
	}
	for(int i=2;i<=n;i++)
	{
		if(vis[i])continue;
		M[u+1]=i;
		vis[i]=1;
		dfs(u+1);
		vis[i]=0;
	}
	return ;
}
int main()
{
	freopen("round.in","r",stdin);
	freopen("round.out","w",stdout);
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>N[i];
	}
	M[1]=1;
	vis[1]=1;
	dfs(1);
	cout<<ans<<endl;
	fclose(stdin);
	fclose(stdout);
	return 0;
}