第一个样例明明能算对啊,为什么全是TLE?
#include<cstdio>
#include<iostream>
#define ll long long
using namespace std;
const ll M=1e9+7;
int a[5001];
int main()
{
ll n,i,j,x,t,maxx=0,minx=2147483647,cnt=0,ans=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%lld",&x);
a[x]++;
maxx=max(maxx,x);
minx=min(minx,x);
}
for(i=maxx;i>minx;i--)
{
if(a[i]>=2)
{
cnt=0;
x=a[i]*(a[i]-1)/2;
for(j=1;j<=i/2;j++)
{
t=i-j;
if(a[t]&&a[j])
{
if(t!=j)
cnt+=a[j]*a[t]%M;
else
cnt+=a[j]*(a[j]-1)/2%M;
}
}
ans+=cnt*x%M;
ans%=M;
}
}
printf("%lld",ans);
return 0;
}