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