>>22
酷いソースだけど書けた
#include <stdio.h>
#define N 5
int a[N] = {5, 7, 10, 12, 15};
int x = 18;
int ansf[N];
int mini;
void search(int f[], int sum, int idx) {
if(sum >= x && sum < mini) {
int i;
mini = sum;
for(i=0;i<N;i++) ansf[i] = f[i];
return;
}
if(sum >= mini || idx == N)
return;
search(f, sum, idx+1);
f[idx] = 1;
search(f, sum+a[idx], idx+1);
f[idx] = 0;
}
int main() {
int i, f[N] = {0};
for(i=0;i<N;i++) mini += a[i];
mini++;
search(f, 0, 0);
for(i=0;i<N;i++) {
if(ansf[i]) printf("%d ", a[i]);
}
return 0;
}