//values whose sum is 0 //二分,在三四列的数据中二分找一二列的数据 #include <iostream> #include <algorithm> using namespace std; typedef long long ll; int n; ll arr[4005][6];//输入数据 ll brr[4005*4000];//存第一、二列n方个数的和 ll crr[4005*4000];//存第三、四列n方个数的和 int main() { int k=0,cnt=0; cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=4;j++) cin>>arr[i][j];//输入 for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) brr[++k]=arr[i][1]+arr[j][2]; k=0; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) crr[++k]=-(arr[i][3]+arr[j][4]); sort(crr+1,crr+1+n*n);//三四列和排序 for(int i=1;i<=n*n;i++) { cnt+=upper_bound(crr+1,crr+1+n*n,brr[i])-lower_bound(crr+1,crr+1+n*n,brr[i]);//计数,看有多少个重复的 } cout<<cnt<<endl; }