用STL写的,感觉思路没问题呜呜呜蒟蒻太弱了
#include<iostream>
#include<algorithm>
#include<vector>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
vector<int> arr,value_counts;
cin >> n;
for(int i = 0;i < n;i++)
{
int temp;
cin >> temp;
arr.push_back(temp);
if(find(value_counts.begin(),value_counts.end(),temp) == value_counts.end())
value_counts.push_back(temp);
}
sort(value_counts.begin(),value_counts.end());
int cnt = 0;
for(vector<int>::iterator iter = value_counts.begin();iter != value_counts.end();iter++)
{
int right = count(arr.begin(),arr.end(),*iter)*(count(arr.begin(),arr.end(),*iter)-1)/2;
int left = count(arr.begin(),arr.end(),2*(*iter))*(count(arr.begin(),arr.end(),2*(*iter))-1)/2;
cnt += left*right;
for(vector<int>::iterator i = iter+1;i != value_counts.end();i++)
{
cnt += count(arr.begin(),arr.end(),*iter)*count(arr.begin(),arr.end(),*i)*count(arr.begin(),arr.end(),(*i)+(*iter))*(count(arr.begin(),arr.end(),(*i)+(*iter))-1)/2;
}
}
cout << cnt%(1000000007);
return 0;
}