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