求助!!!感觉和题解一模一样,但只AC了前三个qwq
查看原帖
求助!!!感觉和题解一模一样,但只AC了前三个qwq
652803
forstarever楼主2022/2/23 10:12
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
//const int MAXA=10e5+10;
const long long mod=10e9+7;
long long num[5010];
long long f(long long n)
{
    return n*(n-1)/2%mod;
}
int main() {
    int n,a,maxa=-1,mina=10e5+10;
    long long ans=0;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a);
        maxa=max(maxa,a);
        mina=min(mina,a);
        num[a]++;
    }
    for(int i=mina+1;i<=maxa;i++)
    {
        if(num[i]>=2)
        {
            long long p=f(num[i])%mod;
            for(int j=mina;j<=i/2;j++)
            {
                if(j==i-j&&num[j]>=2)
                    ans=(ans+p*f(num[j])%mod)%mod;
                if(j!=i-j&&num[j]&&num[i-j])
                    ans=(ans+p*num[j]%mod*num[i-j]%mod)%mod;
            }
        }
    }
    printf("%lld",ans%mod);
    return 0;
}
2022/2/23 10:12
加载中...