
#include<bits/stdc++.h>
using namespace std;
#define maxn 500+10
int a[maxn];
int main(int argc, const char** argv) {
int n;
int count;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(a[i]+a[j]==0){
count++;
}
}
}
cout<<count<<endl;
return 0;
}
// 其他解法1:
#include<bits/stdc++.h>
using namespace std;
const int N=500;
int a[N];
int main(int argc, const char** argv) {
int n,cnt=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
// 寻找相反数,使用两个指针向中间进行寻找
int left=0;
int right = n-1;
while(left<right && a[left]<0 && a[right]>0)
if(a[left]+a[right]==0){
cnt++;
left++;
right--;
}else if(a[left]+a[right]<0){
left++; // 负数实在太大,向右边进行移动
}else if(a[left]+a[right]>0){
right--;
}
cout<<cnt<<endl;
return 0;
}
// 其他解法2:
#include<bits/stdc++.h>
using namespace std;
int main(int argc, const char** argv) {
map<int,int> m;
int n,v,sum=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>v;
// 判断负数是否已经存在,构建map,进行统计
if(m.find(-v)==m.end())
m[v]++;
else
sum++;
}
cout<<sum<<endl;
return 0;
}