比赛 |
“Asm.Def战记之夏威夷”杯 |
评测结果 |
AWWWWWWWWW |
题目名称 |
Asm.Def的验证码 |
最终得分 |
10 |
用户昵称 |
woca |
运行时间 |
0.045 s |
代码语言 |
C++ |
内存使用 |
2.61 MiB |
提交时间 |
2015-11-06 09:49:33 |
显示代码纯文本
#include <cmath>
#include <cstdio>
#include <cstring>
#include <fstream>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
const int mod=1000000007;
int num[100100];
int color[100100];
long long sum[100100];
long long add[100100];
long long ans=0;
int main(){
freopen("asm_code.in","r",stdin);
freopen("asm_code.out","w",stdout);
memset(add,0,sizeof(add));
memset(sum,0,sizeof(sum));
int n,cnt=1;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&num[i]);
if(i==1||num[i]==num[1])
color[cnt++]=i;
}
for(int i=n;i>0;i--)
if(num[i+1]!=num[1]&&i!=n) sum[i]=sum[i+1]+1;
else sum[i]=sum[i+1];
for(int i=1;i<cnt;i++)
add[i]=(add[i-1]+sum[color[i]])%mod;
for(int i=2;i<cnt;i++)
ans=(ans+((add[i]-i*sum[color[i]])+mod)%mod)%mod;
printf("%lld",ans);
return 0;
}