比赛 |
“Asm.Def战记之夏威夷”杯 |
评测结果 |
AAAAAAATTT |
题目名称 |
Asm.Def的验证码 |
最终得分 |
70 |
用户昵称 |
devil |
运行时间 |
3.053 s |
代码语言 |
C++ |
内存使用 |
2.00 MiB |
提交时间 |
2015-11-06 09:21:40 |
显示代码纯文本
- #include <cstdlib>
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <cmath>
- #include <map>
- #include <stack>
- #include <vector>
- #include <map>
- #include <queue>
- #include <ctime>
- #include <algorithm>
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- typedef long double ld;
- typedef unsigned int uint;
- const int inf=1061109567;
- const int maxn=100010;
- const int maxm=110;
- const int mod=1000000007;
- const double pi=3.14;
-
- int a[maxn];
- int f[maxn];
- int g[maxn];
- int fnt[maxn];
- int lst[maxn];
-
- int main()
- {
- freopen("asm_code.in","r",stdin);
- freopen("asm_code.out","w",stdout);
- //clock_t st=clock();
- int n;scanf("%d",&n);
- for(int i=1;i<=n;i++)
- {
- scanf("%d",&a[i]);
- f[i]=f[i-1];g[i]=g[i-1];
- if(a[i]==1) f[i]++;
- else g[i]++;
- }
- for(int i=1;i<=n;i++)
- {
- if(a[i]==1) fnt[i]=g[i],lst[i]=g[n]-g[i];
- else fnt[i]=f[i],lst[i]=f[n]-f[i];
- }
- ll ans=0,tmp;int cnt;
- for(int i=1;i<=n;i++)
- {
- if(a[i]==2) continue;
- cnt=0;
- for(int j=i+1;j<=n;j++)
- {
- if(a[j]==2) cnt++;
- else
- {
- tmp=(cnt*((fnt[i]+lst[j])%mod))%mod;
- ans=(ans+tmp)%mod;
- }
- }
- }
- printf("%lld\n",ans);
- //clock_t ed=clock();
- //printf("\nTime used : %.5lf Ms\n",double(ed-st)/CLOCKS_PER_SEC);
- return 0;
- }