Pagini recente » Cod sursa (job #1443596) | Cod sursa (job #817330) | Cod sursa (job #3178458) | Cod sursa (job #1966516) | Cod sursa (job #1420268)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define inFile "zebughil.in"
#define outFile "zebughil.out"
#define MAX_N 18
FILE *in = fopen(inFile, "r");
FILE *out = fopen(outFile, "w");
int G, N, minGr;
int W[MAX_N];
int S[MAX_N];
void BKT(int k, int u) {
if(k == N+1) minGr = min(minGr, u);
else {
int i;
for(i = 1; i <= u; i++) {
if(S[i] + W[k] <= G) {
S[i] += W[k];
BKT(k+1, u);
S[i] -= W[k];
}
}
S[u+1] = W[k];
BKT(k+1, u+1);
S[u+1] = 0;
}
}
int main() {
int T, i;
for(T = 1; T <= 3; T++) {
memset(S, 0, sizeof(S));
memset(W, 0, sizeof(W));
fscanf(in, "%d %d", &N, &G);
for(i = 1; i <= N; i++) fscanf(in, "%d", &W[i]);
minGr = MAX_N;
BKT(1, 0);
fprintf(out, "%d\n", minGr);
}
fclose(in);
fclose(out);
return 0;
}