注意数据 longlong
一共五组数据,五重循环应该是不行(不会写
然后可以分解一下问题,分成三组数据
12合并为一组,34合并为一组;
代码
#include <iostream>
#include <string.h>
#include <algorithm>
#define mm memset
#define ll long long
using namespace std;
int t;
int n;
const int N = 200 * 200 + 10;
ll num1[250], num2[250], num3[250], num4[250], num5[250];
ll fuck1[N], fuck2[N];
int main()
{
cin >> t;
while (t--)
{
mm(num1, 0, sizeof(num1));
mm(num2, 0, sizeof(num2));
mm(num3, 0, sizeof(num3));
mm(num4, 0, sizeof(num4));
mm(num5, 0, sizeof(num5));
mm(fuck1, 0, sizeof(fuck1));
mm(fuck2, 0, sizeof(fuck2));
cin >> n;
for (int i = 0; i < n; i++)
cin >> num1[i];
for (int i = 0; i < n; i++)
cin >> num2[i];
for (int i = 0; i < n; i++)
cin >> num3[i];
for (int i = 0; i < n; i++)
cin >> num4[i];
for (int i = 0; i < n; i++)
cin >> num5[i];
int ind = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
fuck1[ind] = num1[i] + num2[j];
fuck2[ind] = num3[i] + num4[j];
ind += 1;
}
}
sort(fuck1, fuck1 + n * n + 1);
sort(fuck2, fuck2 + n * n + 1);
bool flag = false;
for (int i = 0; i < n; i++)
{
int p =n*n - 1;
for (int j = 0; j < n*n && p >= 0; j++)
{
while (num5[i] + fuck1[j] + fuck2[p] > 0)
p--;
if (num5[i] + fuck1[j] + fuck2[p] == 0)
{
flag = true;
break;
}
}
if(flag)
break;
}
if (flag)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
return 0;
}