Cod sursa(job #608632)

Utilizator maritimCristian Lambru maritim Data 17 august 2011 15:44:17
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<stdio.h>

#define MaxG 10100

int A[MaxG];
int Viz[MaxG] = {1};
int N;
int G;

void citire(void)
{
	int a,b;
	FILE *f = fopen("rucsac.in","r");
	
	fscanf(f,"%d %d",&N,&G);
	for(int i=1;i<=N;i++)
	{
		fscanf(f,"%d %d",&a,&b);
		for(int j=G-a;j>-1;j--)
			if(Viz[j] && (!Viz[j+a] || A[j+a] < A[j] + b))
			{
				Viz[j+a] = 1;
				A[j+a] = A[j] + b;
			}
	}
	
	fclose(f);
}

int FindMax(void)
{
	int Max = -1;
	for(int i=G;i;i--)
		if(Max < A[i])
			Max = A[i];
	return Max;
}

int main()
{
	FILE *g = fopen("rucsac.out","w");
	
	citire();
	fprintf(g,"%d",FindMax());
	
	fclose(g);
	return 0;
}