Pagini recente » Cod sursa (job #338198) | Cod sursa (job #1019253) | Cod sursa (job #1236204) | Cod sursa (job #2390563) | Cod sursa (job #1560292)
#include <stdio.h>
#define MAXN 17
#define INF 2000000000
int v[MAXN], room[(1 << MAXN)], cam[(1 << MAXN)];
int main(){
FILE *in = fopen("zebughil.in", "r");
FILE *out = fopen("zebughil.out", "w");
int n, g, i, j, t, nr, nc;
t = 3;
for(; t > 0; t--){
fscanf(in, "%d%d", &n, &g);
for(i = 0; i < n; i++)
fscanf(in, "%d", &v[i]);
room[0] = cam[0] = 0;
for(i = 1; i < (1 << n); i++){
room[i] = 0;
cam[i] = INF;
for(j = 0; j < n; j++){
if(i & (1 << j)){
nc = cam[i ^ (1 << j)];
if(room[i ^ (1 << j)] < v[j]){
nc++;
nr = g - v[j];
}
else
nr = room[i ^ (1 << j)] - v[j];
if(nc < cam[i] || (nc == cam[i] && room[i] < nr)){
room[i] = nr;
cam[i] = nc;
}
}
}
}
fprintf(out, "%d\n", cam[(1 << n) - 1]);
}
fclose(out);
return 0;
}