这道题,让我明白了lower_bound(),upper_bound()的威力啊
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[4003];
int b[4003];
int c[4003];
int d[4003];
int e[16000003];
int main()
{
int n;
cin>>n;
int i;
int j;
for(i=0;i<n;i++)
cin>>a[i]>>b[i]>>c[i]>>d[i];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
e[i*n+j]=a[i]+b[j];
}
sort(e,e+n*n);
int res;
int sum=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
res=c[i]+d[j];
sum+=upper_bound(e,e+n*n,-res)-lower_bound(e,e+n*n,-res);//返回个数,中间有几个相同的值也包含了,好巧妙
}
cout<<sum<<endl;
}