思路:将给定序列进行排序,然后遍历负数元素和0,利用二分查找算法在整个序列中查找当前元素的相反数,统计能查找到相反数的数量即可。
#include <bits/stdc++.h>
using namespace std;
const int maxn = 500;
int main(){
int a[maxn],n;cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
int ans=0;
for(int i=0;a[i]<=0;i++)
if(binary_search(a+i+1,a+n,-a[i]))
ans++;
cout<<ans;
return 0;
}