比赛 Asm_Def战记之透明计算网络 评测结果 AAAATTTTTT
题目名称 Asm_Def排兵布阵 最终得分 40
用户昵称 1azyReaper 运行时间 6.239 s
代码语言 C++ 内存使用 4.89 MiB
提交时间 2015-11-01 11:29:42
显示代码纯文本
#include <fstream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <deque>
#define ifs ifstream
#define ofs ofstream
#define MOD 998244353
#define MAX 100010
using namespace std;
ifs fin("asm_formation.in");
ofs fout("asm_formation.out");
int n,sum,ans=0,num[MAX],num1[MAX];
long long sub[MAX*5];
int work(int x,int y)
{
	num1[x]-=1;
	sub[y]=x;
	if(num1[x]==0)
	{
		int v=x;
		for(int j=y;j>=1;j--)
		{
			if(v<sub[j]&&num1[sub[j]]==0)
				return 0;
		}
	}
	if(y==sum)
		ans++;
	for(int j=1;j<=n;j++)
	{
		if(num1[j]>0)
		{
			work(j,y+1);
			num1[j]++;
		}
	}
	return 0;
}
int main()
{
	fin>>n;
	for(int i=1;i<=n;i++)
	{
		fin>>num[i];
		sum+=num[i];
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=sum;j++)
		{
			sub[j]=0;
		}
		for(int j=1;j<=n;j++)
		{
			num1[j]=num[j];
		}
		work(i,1);
	}
	fout<<ans%MOD<<endl;
	//fout<<a[k]<<endl;
	return 0;
}