比赛 Asm_Def战记之透明计算网络 评测结果 AAAATTTTTT
题目名称 Asm_Def排兵布阵 最终得分 40
用户昵称 sro dydxh orz 运行时间 6.948 s
代码语言 C++ 内存使用 3.00 MiB
提交时间 2015-11-01 11:54:31
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int mod=998244353;
int k;int num[501000],n[101000],nn[101000],nu,ans=0;
int main(){
	freopen("asm_formation.in","r",stdin);
	freopen("asm_formation.out","w",stdout);
	scanf("%d",&k);
	for(int i=1;i<=k;i++){
		scanf("%d",&n[i]);
		nn[i]=n[i];
		for(int j=1;j<=n[i];j++)
			num[++nu]=i;
	}
	ans=1;bool flag=0;
	while(next_permutation(num+1,num+nu+1)){
		/*for(int i=1;i<=nu;i++)
			cout<<num[i]<<' ';cout<<endl;*/
		flag=0;
		for(int i=1;i<=k;i++)
			n[i]=nn[i];
		int maxn=0;
		for(int i=1;i<=nu;i++){
			if(flag==1)	break;
			int temp=num[i];
			n[temp]--;
			if(n[temp]==0){
				if(temp>maxn)	maxn=temp;
				if(temp<maxn)	{flag=1;break;}
			}
		}
		if(flag==1)	continue;
		ans++;
	}
	cout<<ans<<endl;
	return 0;
}