2015
05-23

# Trouble

Hassan is in trouble. His mathematics teacher has given him a very difficult problem called 5-sum. Please help him.
The 5-sum problem is defined as follows: Given 5 sets S_1,…,S_5 of n integer numbers each, is there a_1 in S_1,…,a_5 in S_5 such that a_1+…+a_5=0?

First line of input contains a single integer N (1≤N≤50). N test-cases follow. First line of each test-case contains a single integer n (1<=n<=200). 5 lines follow each containing n integer numbers in range [-10^15, 1 0^15]. I-th line denotes set S_i for 1<=i<=5.

First line of input contains a single integer N (1≤N≤50). N test-cases follow. First line of each test-case contains a single integer n (1<=n<=200). 5 lines follow each containing n integer numbers in range [-10^15, 1 0^15]. I-th line denotes set S_i for 1<=i<=5.

2
2
1 -1
1 -1
1 -1
1 -1
1 -1
3
1 2 3
-1 -2 -3
4 5 6
-1 3 2
-4 -10 -1

No
Yes

这道题目的意思就是给定5个集合,每个集合中选取一个数字,使他们的和为0.判断给定的五个集合能否找到这样的一组数据.

#include<stdio.h>
#include<stdlib.h>

int n;
__int64 que[5][210],a[41000],b[41000];

int cmp(const void*a,const void*b)
{
if(*(__int64 *)a-*(__int64 *)b > 0)
return 1;
return -1;
}

void fun()
{
int i,f,ji=0;
for(i=0;i<n;i++)
{
for(f=0;f<n;f++)
{
a[ji]=que[0][i]+que[1][f];
ji++;
}
}
qsort(a,n*n,sizeof(a[0]),cmp);
ji=0;
for(i=0;i<n;i++)
{
for(f=0;f<n;f++)
{
b[ji]=que[2][i]+que[3][f];
ji++;
}
}
qsort(b,n*n,sizeof(b[0]),cmp);
}

int sea(__int64 x)
{
while(1)
{
{
return 1;
}
{
tail--;
if(-1 == tail)
{
break;
}
}
else
{
{
break;
}
}
}
return 0;
}

int main()
{
int i,num,f,g;
scanf("%d",&num);
for(i=0;i<num;i++)
{
scanf("%d",&n);
for(f=0;f<5;f++)
{
for(g=0;g<n;g++)
{
scanf("%I64d",&que[f][g]);
}
}

fun();

for(g=0;g<n;g++)
{
if(1 == sea(-que[4][g]))
{
printf("Yes\n");
break;
}
}
if(g == n)
{
printf("No\n");
}
}
return 0;
}

1. 你认为应该怎么告诉大家？写大字报？那就是全国人民都参加的文革运动，大字报少吗？满街都是，有人听进去了吗？不仅没有，群众还会将写大字报的扭送革委会！！

2. 你认为应该怎么告诉大家？写大字报？那就是全国人民都参加的文革运动，大字报少吗？满街都是，有人听进去了吗？不仅没有，群众还会将写大字报的扭送革委会！！

3. 你认为应该怎么告诉大家？写大字报？那就是全国人民都参加的文革运动，大字报少吗？满街都是，有人听进去了吗？不仅没有，群众还会将写大字报的扭送革委会！！

4. 你认为应该怎么告诉大家？写大字报？那就是全国人民都参加的文革运动，大字报少吗？满街都是，有人听进去了吗？不仅没有，群众还会将写大字报的扭送革委会！！

5. 你认为应该怎么告诉大家？写大字报？那就是全国人民都参加的文革运动，大字报少吗？满街都是，有人听进去了吗？不仅没有，群众还会将写大字报的扭送革委会！！

6. 你认为应该怎么告诉大家？写大字报？那就是全国人民都参加的文革运动，大字报少吗？满街都是，有人听进去了吗？不仅没有，群众还会将写大字报的扭送革委会！！

7. 你认为应该怎么告诉大家？写大字报？那就是全国人民都参加的文革运动，大字报少吗？满街都是，有人听进去了吗？不仅没有，群众还会将写大字报的扭送革委会！！

8. 你认为应该怎么告诉大家？写大字报？那就是全国人民都参加的文革运动，大字报少吗？满街都是，有人听进去了吗？不仅没有，群众还会将写大字报的扭送革委会！！

9. 你认为应该怎么告诉大家？写大字报？那就是全国人民都参加的文革运动，大字报少吗？满街都是，有人听进去了吗？不仅没有，群众还会将写大字报的扭送革委会！！

10. 你认为应该怎么告诉大家？写大字报？那就是全国人民都参加的文革运动，大字报少吗？满街都是，有人听进去了吗？不仅没有，群众还会将写大字报的扭送革委会！！

11. 你认为应该怎么告诉大家？写大字报？那就是全国人民都参加的文革运动，大字报少吗？满街都是，有人听进去了吗？不仅没有，群众还会将写大字报的扭送革委会！！

12. 你认为应该怎么告诉大家？写大字报？那就是全国人民都参加的文革运动，大字报少吗？满街都是，有人听进去了吗？不仅没有，群众还会将写大字报的扭送革委会！！

13. 你认为应该怎么告诉大家？写大字报？那就是全国人民都参加的文革运动，大字报少吗？满街都是，有人听进去了吗？不仅没有，群众还会将写大字报的扭送革委会！！

14. 你认为应该怎么告诉大家？写大字报？那就是全国人民都参加的文革运动，大字报少吗？满街都是，有人听进去了吗？不仅没有，群众还会将写大字报的扭送革委会！！