标签:
Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/10000 K (Java/Others)
Total Submission(s): 17036 Accepted Submission(s):
4337
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #define MAX 1100 bool cmp(int a,int b) { return a<b; } int a[MAX]; int b[MAX]; int c[MAX]; int d,str[300000]; int main() { int n,m,j,i; int k=1,l; while(scanf("%d%d%d",&l,&n,&m)!=EOF) { for(i=0;i<l;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) scanf("%d",&b[i]); for(i=0;i<m;i++) scanf("%d",&c[i]); int len=0; for(i=0;i<n;i++) { for(j=0;j<m;j++) { str[len++]=b[i]+c[j]; } } sort(str,str+len,cmp); int ok; printf("Case %d:\n",k++); int s; scanf("%d",&s); for(i=0;i<s;i++) { scanf("%d",&d); ok=0; for(j=0;j<l;j++) { int left = 0,right = len,mid = 0; int goal = d - a[j]; while(right >= left) { mid = (right + left) >> 1; if(str[mid] < goal) left = mid + 1; else if(str[mid] > goal) right = mid - 1; else { ok=1; break; } } if(ok) break; } if(ok) printf("YES\n"); else printf("NO\n"); } } return 0; }
hdoj 2141 Can you find it?【二分查找+暴力】
标签:
原文地址:http://www.cnblogs.com/tonghao/p/4689940.html