沙漠之旅
#include<stdio.h> #include<algorithm> #include<iostream> using namespace std; int a[1005]; int main() { int _case,l,x,n; int i,j,k,g; scanf("%d",&_case); while(_case--) { scanf("%d %d %d",&l,&x,&n); for(i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); l-=x; for(i=0;i<n;i++) { if(a[i]>=l)break; for(j=0;j<n;j++) { if(a[i]+a[j]>=l)break; for(k=0;k<n;k++) { if(a[i]+a[j]+a[k]>=l)break; for(g=0;g<n;g++) if(a[i]+a[j]+a[k]+a[g]==l) { printf("Yes\n"); goto End; } else if(a[i]+a[j]+a[k]+a[g]>l)break; } } } printf("No\n"); End: continue; } return 0; }
http://www.bnuoj.com/bnuoj/problem_show.php?pid=29376