用unorderdmap 即可 ,否则会超时
#include <iostream>
#include <memory.h>
#include <math.h>
#include <stdio.h>
#include <unordered_map>
#include <string>
#include <map>
using namespace std;
unordered_map<int,int> mymap;
int a[4005],b[4005],c[4005],d[4005];
int sum[16000005];
int main()
{
int n;
cin >> n;
for( int i = 0; i < n; i++ )
{
cin >> a[i] >> b[i] >> c[i] >> d[i];
}
int cnt = 0;
for( int i = 0; i < n; i++ )
for( int j = 0; j < n; j++ )
{
sum[cnt++] = a[i] + b[j];
}
for( int i = 0; i < n; i++ )
for( int j = 0; j < n; j++ )
{
mymap[c[i] + d[j]]++;
}
int num = 0;
for( int i = 0; i < cnt; i++ )
{
if( mymap.find( (-1) * sum[i] ) != mymap.end() )
num += mymap[ (-1) * sum[i] ];
}
cout << num <<endl;
return 0;
}