思路:先将给出的数分为奇数和偶数,在根据奇偶统计总共有多少数满足条件,本题应该用unordered_map,unorderd_map的查找速度比map快
#include<iostream>
#include<unordered_map>
using namespace std;
typedef long long ll;
unordered_map<ll,ll>tt;
ll a[1010],ans(0),sum(0),fum(0),c[1010],d[1010];
int main()
{int n;ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);while(cin>>n){ans=0;sum=0;fum=0;for(int i=0;i<n;i++){cin>>a[i];if(a[i]%2==0){c[sum]=a[i];sum++;}else{d[fum]=a[i];fum++;}tt[a[i]]++;} for(int i=0;i<sum-1;i++)for(int j=i+1;j<sum;j++){if(tt[(c[i]+c[j])/2]>0){ans++;tt[(c[i]+c[j])/2]--; } }for(int i=0;i<fum-1;i++){for(int j=i+1;j<fum;j++){if(tt[(d[i]+d[j])/2]>0){ans++;tt[(d[i]+d[j])/2]--; } }} cout<<ans<<endl;tt.clear();} return 0;
}