Pagini recente » Cod sursa (job #2652034) | Cod sursa (job #2249135) | Cod sursa (job #1042567) | Cod sursa (job #2958630) | Cod sursa (job #2615796)
#include <stdio.h>
#define MAXN 5000
#define MAXG 10000
FILE *fin, *fout;
int g[MAXN+1];
int p[MAXN+1];
int v[MAXG+1];
int ant[MAXG+1];
int main() {
int n, greutate, i, gg, suma;
fin = fopen("energii.in", "r");
fout = fopen("energii.out", "w");
fscanf(fin, "%d%d", &n, &greutate);
suma = 0;
for (i=1; i<=n; i++) {
fscanf(fin, "%d%d", &g[i], &p[i]);
suma+=g[i];
}
if (suma<greutate) {
fprintf(fout, "%d", -1);
} else {
for (i=1; i<=n; i++) {
for (gg=1; gg<=greutate; gg++) {
v[gg] = ant[gg];
if (gg>=g[i]) {
if (v[gg]<ant[gg-g[i]]+p[i]) {
v[gg] = ant[gg-g[i]]+p[i];
}
}
}
for (gg=1; gg<=greutate; gg++) {
ant[gg] = v[gg];
}
}
gg = greutate;
if (v[gg]<ant[gg-g[i]]+p[i]) {
v[gg] = ant[gg-g[i]]+p[i];
}
fprintf(fout, "%d\n", v[greutate]);
}
fclose(fin);
fclose(fout);
return 0;
}