思路:先将给出的数分为奇数和偶数,在根据奇偶统计总共有多少数满足条件,本题应该用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;
}