比赛 2024暑期C班集训2 评测结果 AWAWAAAWWW
题目名称 大力枚举 最终得分 50
用户昵称 flyfree 运行时间 0.082 s
代码语言 C++ 内存使用 2.06 MiB
提交时间 2024-07-02 09:24:06
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define mod 1000000007
#define ll long long
#define MAXN 100005
ll n,ans;
ll a[MAXN],s1[MAXN],s2[MAXN],s3[MAXN],b[MAXN],c[MAXN]; 
int main(){
    freopen("enumerate.in","r",stdin);
    freopen("enumerate.out","w",stdout); 
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        s1[i]=(s1[i-1]+a[i])%mod;
//        cout<<s1[i]<<" ";
    }
//    cout<<endl;
    for(int i=1;i<n;i++){
        b[i]=(a[i]*(s1[n]-s1[i]))%mod;
        s2[i]=(s2[i-1]+b[i])%mod;
//        cout<<b[i]<<" ";
    }
//    cout<<endl;
//    for(int i=1;i<n;i++)cout<<s2[i]<<" ";
//    cout<<endl;
    for(int i=1;i<n-1;i++){
        c[i]=(a[i]*(s2[n-1]-s2[i]))%mod;
        s3[i]=(s3[i-1]+c[i])%mod;
//        cout<<c[i]<<" ";
    }
//    cout<<endl;
//    for(int i=1;i<n-1;i++)cout<<s3[i]<<" ";
//    cout<<endl;
    for(int i=1;i<=n-3;i++){
        ans=(ans+a[i]*(s3[n-2]-s3[i])%mod)%mod;
    }
    cout<<ans;
    return 0;
}