您的位置:首页 > 其它

HDU-2141

2017-02-17 23:55 351 查看
#include<iostream>
#include <math.h>
#include <stdio.h>
#include <algorithm>
using namespace std;
long long ab[1000000];
long long a[1000],b[1000],c[1000];
int main(){
int L,N,M;
int num=1;
while(scanf("%d%d%d",&L,&N,&M)!=EOF){

int i=0;
for(i=0;i<L;i++){
cin>>a[i];
}
for(i=0;i<N;i++){
cin>>b[i];
}
for(i=0;i<M;i++){
cin>>c[i];
}
int S;
cin>>S;
int j=0,k=0,T;
for(i=0;i<L;i++)
for(j=0;j<N;j++)
ab[k++]=a[i]+b[j];
sort(ab,ab+k);
//  sort(c,c+M);
k=unique(ab,ab+k)-ab;
cout<<"Case "<<num++<<":"<<endl;
while(S--){

int d;
cin>>d;

if(ab[0]>d-c[0]||ab[k-1]<d-c[M-1]){
cout<<"NO"<<endl;
continue;
}
int flag=0;
for(int T1=0;T1<M&&flag==0;T1++){
long long  tag=d-c[T1];

int low=0;
int high=k-1;
int mid;
while(low<=high){
//	cout<<"--"<<endl;
mid=(low+high)/2;
if(ab[mid]==tag){
flag=1;
break;
}
else if(ab[mid]>tag){
high=mid-1;
}
else low= mid+1;
}
}
if(flag==1)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: