怎么会这样?感觉写得和题解的思路一样啊,但是怎么改都是全WA。蒟蒻完全看不出问题,是哪里的int炸了吗?而且我全开long long也还是全WA。
#include <bits/stdc++.h>
using namespace std;
int n;
int a[100000]={0};
int num[5000]={0};
long long int sum=0;
long long int mod = 1000000007;
long long int C2(long long int n){
long long int res;
res = (n*(n-1)/2)%mod;
return res;
}
int main(){
cin >> n;
int max = 0;
int min = 1e6;
for (int i=0; i<n; i++){
cin >> a[i];
if (a[i]>max){max = a[i];}
if (a[i]<min){min = a[i];}
num[a[i]]++;
}
for (int i=min+1; i<=max; i++){
long long int x;
if (num[i]>=2){
x = C2(num[i])%mod;
for (int j=min; j<=i/2; j++){
if (j!=i-j && num[j]>=1 && num[i-j]>=1){
sum += x*(num[i]*num[i-j])%mod;
}
if (j==i-j && num[j]>=2){
sum += x*C2(num[j])%mod;
}
sum = sum%mod;
}
}
}
cout << sum%mod << endl;
return 0;
}