比赛 Asm_Def战记之透明计算网络 评测结果 ATWTTTTTTT
题目名称 Asm_Def排兵布阵 最终得分 10
用户昵称 slyterlins 运行时间 8.258 s
代码语言 C++ 内存使用 3.36 MiB
提交时间 2015-11-01 11:50:09
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int MAXN=100000;
const long long ppp=998244353;
long long a[MAXN],f[MAXN],sum=0,anss,s[MAXN],n,ans[MAXN];
void deal();
void dp(int k)
{
	if(k>sum){deal();return;}
	for(int i=1;i<=n;i++)
	{
		if(f[i]>0){
			ans[k]=i;
			f[i]--;
			if(f[i]==0)a[i]=k;
			dp(k+1);
			f[i]++;ans[k]=0;
		}
	}
}

void deal()
{
//	for(int i=1;i<=n;i++)cout<<a[i]<<endl;;
	int t=0;//for(int i=1;i<sum;i++)cout<<a[i];cout<<a[sum]<<endl;
	for(int i=1;i<n;i++)if(a[i]>a[i+1])t=1;
	if(!t)anss++;
	memset(f,0,sizeof(f));memset(a,0,sizeof(a));
}
int main()
{
	freopen("asm_formation.in","r",stdin);
    freopen("asm_formation.out","w",stdout);	
	cin>>n;
    for(int i=1;i<=n;i++)
		{
		cin>>f[i];sum+=f[i];}
		dp(1);
		cout<<anss;
}