Pagini recente » Cod sursa (job #3272157) | Cod sursa (job #2965350) | Cod sursa (job #3000393) | Cod sursa (job #2909771) | Cod sursa (job #3262361)
#include <stdio.h>
#define MAX(a, b) (a > b ? a : b)
#define MIN(a, b) (a < b ? a : b)
int v[75000 + 5];
int wh[20000 + 5];
int main()
{
FILE *in = fopen("ghiozdan.in", "r");
int n, g;
fscanf(in, "%d%d", &n, &g);
int max = 0;
for (int i = 0; i < n; i++) {
fscanf(in, "%d", &wh[i]);
for (int j = max; j >= 0; j--)
if (v[j] != 0) {
int s = wh[i] + j;
if (s <= g) {
if (v[s] == 0)
v[s] = 1 + v[j];
else
v[s] = MIN(v[s], 1 + v[j]);
max = MAX(max, s);
}
}
v[wh[i]] = 1;
max = MAX(max, wh[i]);
}
fclose(in);
int sol = g;
while(sol >= 0 && v[sol] == 0)
sol--;
FILE *out = fopen("ghiozdan.out", "w");
fprintf(out, "%d %d\n", sol, v[sol]);
fclose(out);
}