基础二分题。。。
AC代码
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 4e3+10;
int arr[MAXN], brr[MAXN], crr[MAXN], drr[MAXN];
int sum[MAXN*MAXN];
int main() {
int T;
cin >> T;
while(T--) {
int n;
cin >> n;
for(int i = 0; i < n; i++) {
cin >> arr[i] >> brr[i] >> crr[i] >> drr[i];
}
int k = 0;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
sum[k++] = crr[i]+drr[j];
}
}
int ans = 0;
sort(sum, sum+k);
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
int res = -(arr[i]+brr[j]);
ans += (upper_bound(sum, sum+k, res)-lower_bound(sum,sum+k,res));
}
}
cout << ans << endl;
if(T) cout << "\n";
}
return 0;
}