当前位置: 代码迷 >> 综合 >> HNCPC2021 C题 Average of Two Numbers
  详细解决方案

HNCPC2021 C题 Average of Two Numbers

热度:12   发布时间:2023-12-01 19:45:09.0

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