题目意思就是判断两堆数里面能不能从两堆里各找一个数使它们的和是10000
#include<iostream>
using namespace std;
int p1[100000]={0},p2[100000]={0};
int ne1[100000]={0},ne2[100000]={0};
int main()
{
int n1,n2,i,t;
cin>>n1;
for(i=0; i<n1; i++)
{
cin>>t;
if(t>=0)p1[t]=1;
else ne1[-t]=1;
}
cin>>n2;
for(i=0; i<n2; i++)
{
cin>>t;
if(t>=0)p2[t]=1;
else ne2[-t]=1;
}
bool flag=0;
for(i=0; i<=100000; i++)
{
if(p1[i])
if(i<=10000)
{ if(p2[10000-i]){flag=1;break;}}
else if(ne2[i-10000]){flag=1;break; }
}
if(flag==0)
for(i=0; i<=100000; i++)
{
if(p2[i])
if(i<=10000)
{ if(p1[10000-i]){flag=1;break;} }
else if(ne1[i-10000]){flag=1;break; }
}
if(flag)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
// system("pause");
return 0;
}