Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
60356 zengjilin J3 C++ 运行出错 0 1994 MS 3192 KB 985 2022-10-15 11:27:45

Tests(0/20):


#include<bits/stdc++.h> using namespace std; int n,a[500005],x,y,xx=0; int p[2005],p1[2005],Maxn=0; bool q=false; long long ans=0,Max=1000000007; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); Maxn=(Maxn,a[i]); p[a[i]]++; if(p[a[i]]>1) q=true; } if(q){ for(int i=1;i<=n;i++){ ans+=(a[i]*i*(n+1-i)); ans%=Max; } for(int i=1;i<=Maxn;i++){ if(p[i]==0||p[i]==1) continue; int k=0; for(int j=1;j<=n;j++){ if(i==a[j]) k++,p1[k]=j; } x=p1[2],y=p1[1]; if(k==2) ans-=((n-x+1)*y*i); else{ for(int j=2;j<=k;j++){ x=0,y=0; for(int m=1;m<=k-j+1;m++){ xx=y; y=p1[m],x=p1[m+j-1]; ans-=((n-x+1)*y*i); if(xx==0) continue; ans+=((n-x+1)*xx*i); } } } } } else{ for(int i=1;i<=n;i++){ ans+=(a[i]*i*(n+1-i)); ans%=Max; } } ans%=Max; printf("%lld\n",ans); return 0; }


测评信息: