# include <cstdio>
# include <string>
# include <cstring>
# include <iostream>
# include <algorithm>
using namespace std;
# include <string>
# include <cstring>
# include <iostream>
# include <algorithm>
using namespace std;
int a[4005], b[4005], c[4005], d[4005];
int sum[16000025], sum2[16000025];
int sum[16000025], sum2[16000025];
int main()
{
int t;
cin >> t;
while (t--)
{
int n, i, j, len = 0, ans = 0;;
cin >> n;
for (i = 0; i<n; i++)
scanf_s("%d%d%d%d", &a[i], &b[i], &c[i], &d[i]);
for (i = 0; i<n; i++)
for (j = 0; j<n; j++)
sum[len++] = a[i] + b[j];
len = 0;
for (i = 0; i<n; i++)
for (j = 0; j<n; j++)
sum2[len++] = c[i] + d[j];
{
int t;
cin >> t;
while (t--)
{
int n, i, j, len = 0, ans = 0;;
cin >> n;
for (i = 0; i<n; i++)
scanf_s("%d%d%d%d", &a[i], &b[i], &c[i], &d[i]);
for (i = 0; i<n; i++)
for (j = 0; j<n; j++)
sum[len++] = a[i] + b[j];
len = 0;
for (i = 0; i<n; i++)
for (j = 0; j<n; j++)
sum2[len++] = c[i] + d[j];
sort(sum2, sum2 + len);
for (i = 0; i<len; i++)
{
int l = 0, r = len - 1, mid;
while (l<r)
{
mid = (r + l) >> 1;
if (sum[i]<-sum2[mid]) l = mid + 1;
else r = mid;
}
while (sum2[l] == -sum[i] && l<len)
{
ans++;
l++;
}
}
printf("%d\n", ans);
if (t) printf("\n");
}
return 0;
}
for (i = 0; i<len; i++)
{
int l = 0, r = len - 1, mid;
while (l<r)
{
mid = (r + l) >> 1;
if (sum[i]<-sum2[mid]) l = mid + 1;
else r = mid;
}
while (sum2[l] == -sum[i] && l<len)
{
ans++;
l++;
}
}
printf("%d\n", ans);
if (t) printf("\n");
}
return 0;
}
444

被折叠的 条评论
为什么被折叠?



