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