Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/10000 K (Java/Others)
Total Submission(s): 17174 Accepted Submission(s): 4362
3 3 3 1 2 3 1 2 3 1 2 3 3 1 4 10
Case 1: NO YES NO
给出ABC三个数列,再给出S个X,问在数列中是否有元素满足Ai+Bj+Ck=X。
程式需优化,即A+B=X-C。
另外:输出一定要注意都是大写啊啊啊啊啊。。。WA了一下午快哭了。。。
#include<stdio.h> #include<algorithm> #define max 500 using namespace std; int a[max+10],b[max+10],c[max+10],ab[max*max+10]; int main(){ int l,m,n,t=0,s,x; while(~scanf("%d%d%d",&l,&n,&m)){ int i,j,k=0,flag=0; 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]); 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); scanf("%d",&s); printf("Case %d:\n",++t); while(s--){ int flag=0; scanf("%d",&x); int p,q; for(i=0;i<m;i++){ p=x-c[i]; q=lower_bound(ab,ab+k,p)-ab; if(p==ab[q]) flag=1; } if(flag) printf("YES\n"); else printf("NO\n"); } } return 0; }