Cod sursa(job #795043)

Utilizator mihaiSimuSimu Mihai mihaiSimu Data 7 octombrie 2012 15:26:52
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <stdio.h>

int n,gMax;
int P[5005],G[5005];

void intersch(int &i1,int &i2){
	int aux=i1;
	i1=i2;
	i2=aux;
}
int max(int a,int b){return a>b?a:b;}

int M[2][10005];
int main(){
	freopen("rucsac.in","r",stdin);
	freopen("rucsac.out","w",stdout);
	
	scanf("%d %d",&n,&gMax);
	
	for(int i=1;i<=n;i++){
		scanf("%d %d",&G[i],&P[i]);
	}
	
	int i1=1,i0=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=gMax;j++){
			if(j>=G[i])
				M[i1][j]=max(  M[i0][j] ,M[i0][j-G[i]]+P[i] );
			else
				M[i1][j]=M[i0][j];
		}
		intersch(i1,i0);
	}
	printf("%d",M[i0][gMax]);
	return 0;
}