http://acm.hdu.edu.cn/showproblem.php?pid=2141
#include<iostream>
#include
<algorithm>
using namespace std;
__int64 a[
505],b[505],c[505];
__int64 temp[
250005];

bool bsearch(__int64 v,int low,int high) //二分查找
{
    
int mid;
    
while(low <= high)
    
{
        mid 
= (high + low)/2;

        
if(temp[mid] == v)
            
return true;
        
if( temp[mid] < v)
            low 
= mid+1;
        
else
            high 
= mid-1;
    }

    
return false;
}


int partition(__int64 r[],int i,int j)
{
    __int64 pivot 
= r[i];
    
while(i<j)
    
{
        
while(i<&& r[j] >= pivot)
            j
--;
        
if(i<j)
            r[i
++= r[j];
        
while(i<&& r[i] <= pivot)
            i
++;
        
if(i<j)
            r[j
--= r[i];
    }

    r[i] 
= pivot;
    
return i;
}


void quickSort(__int64 r[],int low,int high) //快排
{
    
int pivotpos;
    
if(low < high)
    
{
        pivotpos 
= partition(r,low,high);
        quickSort(r , low , pivotpos
-1);
        quickSort(r , pivotpos
+1 , high);
    }

}


int main()
{
    __int64 lena,lenb,lenc,cas
=1;

    
while(scanf("%I64d%I64d%I64d",&lena,&lenb,&lenc)!=EOF)
    
{        
        __int64 i,j,n;

        
for(i=0 ; i < lena ; i++)

            scanf(
"%I64d",&a[i]);

        
for(i=0 ; i < lenb ; i++)

            scanf(
"%I64d",&b[i]);

        
for(i=0 ; i < lenc ; i++)

            scanf(
"%I64d",&c[i]);

        __int64 k
=0;

        
for(i=0 ; i< lena; i++)

            
for(j=0 ; j< lenb; j++)

                 temp[k
++= a[i] + b[j];

        
//sort(temp+0,temp+k); //,comp
        quickSort(temp,0,k-1);
        printf(
"Case %I64d:\n",cas++);  
        
        scanf(
"%I64d",&n);
        
while(n--)
        
{
            
int ok = 0;
            __int64 sum;
            scanf(
"%I64d",&sum);

            
for(i=0; ok==0 && i<lenc ; i++)
            
{
                
if( bsearch( sum - c[i] ,0,k-1) )//if(binary_search(temp+0,temp+k,sum-c[i]))                
                    ok = 1;
            }

            
if(ok == 1)
                printf(
"YES\n"); 
            
else
                printf(
"NO\n"); 
        }

    }

    
return 0;
}