Cod sursa(job #767319)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 13 iulie 2012 11:58:40
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<stdio.h>

#define WMAX 10002

int a[ WMAX ], n, W;

void solve()
{
	int i, j, max = 0, w, p;
	
	FILE *f = fopen("rucsac.in", "r");
	fscanf(f, "%d %d", &n, &W);
	
	for(i = 1; i <= n; i++)
	{
		fscanf(f, "%d %d", &w, &p);
		for(j = max; j >= 0; j--)
			if( (a[j] || !j) && ( !a[w + j] || p + a[j] > a[w + j]) && j + w <= W )
			{
				a[w + j] = p + a[j];
				if(w + j > max)
					max = w + j;
			}
	}
	
}

void write()
{
	FILE *g = fopen("rucsac.out", "w");
	fprintf(g, "%d\n", a[W]);
	fclose(g);
}

int main()
{
	solve();
	write();
	return 0;
}