Cod sursa(job #662408)

Utilizator marinMari n marin Data 16 ianuarie 2012 18:01:47
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <stdio.h>
#define DIM 10010
int V[DIM], N, G, max, min, maxim, i, x, p;

int main() {
	FILE *f = fopen("rucsac.in","r");
	FILE *g = fopen("rucsac.out","w");
	fscanf(f,"%d %d",&N, &G);
	max = 0;
	min = G+1;
	for (;N;N--) {
		fscanf(f,"%d %d",&x, &p);
		for (i=max;i>=min;i--) {
			if (V[i] != 0 && i+x <= G && V[i] + p > V[i+x]) {
				V[i+x] = V[i] + p;
				if (V[i+x] > maxim)
					maxim = V[i+x];
				if (i+x > max)
					max = i+x;
				if (i+x < min)
					min = i+x;
			}
		}
		if (x <= G && V[x] < p) {
			V[x] = p;
			if (V[x] > maxim)
				maxim = V[x];
			if (x > max)
				max = x;
			if (x < min)
				min = x;
		}
	}
	fclose(f);
	fprintf(g,"%d\n",maxim);
	return 0;
}