P1748 a+b+c+d==0

发布时间 2023-05-23 15:08:26作者: 刘海烽
#include<bits/stdc++.h>
 
using namespace std;
 
/*
*
1
6
-45 22 42 -16
-41 -27 56 30
-36 53 -37 77
-36 30 -75 -46
26 -38 -10 62
-32 -54 -6 45
*/
 
int main()
{
    int n;
    while (cin >> n)
    {
        for (int i = 0; i < n; i++)
        {
            int c;//数据的列数
            while (cin >> c)
            {
                vector<int> A(c, 0);
                vector<int> B(c, 0);
                vector<int> C(c, 0);
                vector<int> D(c, 0);
                for (int i = 0; i < c; i++)
                {
                    cin >> A[i] >> B[i] >> C[i] >> D[i];
                }
                // 初始化完毕--------
                int count = 0;
                int sum = 0;
                /*使用MAP容器 或者一个两行n列的矩阵进行快速查找功能*/
                map<int, int> mp;
                for (int i = 0; i < c; i++)
                {
                    for (int j = 0; j < c; j++)
                    {
                        mp[A[i] + B[j]]++;
                    }
                }
                for (int i = 0; i < c; i++)
                {
                    for (int j = 0; j < c; j++)
                    {
                        
                        if (mp[-(C[i] + D[j])]>0)
                        {
                            count+=mp[-(C[i] + D[j])];
                        }
                    }
                }
                cout << count << endl;
            }
 
 
 
        }
    }
    return 0;
}