比赛 |
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;
}