Cod sursa(job #1452419)

Utilizator Player1Player 1 Player1 Data 20 iunie 2015 19:41:07
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <stdio.h>
#include <algorithm>
 
using namespace std;

int main(){
	freopen("rucsac.in","r",stdin);
	freopen("rucsac.out","w",stdout);

	int N,G,i,cw,t;
	int v[2][10005];
	int greutate[10005], profit[10005];
	
	scanf("%d %d ", &N, &G);
	for(i=1; i<=N; i++)
		scanf("%d %d ", &greutate[i], &profit[i]); 
	
	for(i=0; i<greutate[1]; i++)
		v[0][i] = 0;
	for(i=greutate[1]; i<=G; i++)
		v[0][i] = profit[1];
	
	t=0;
	for(i=2; i<=G; i++){
		t=1-t;
		for(cw=1; cw<=G; cw++){
			v[t][cw] = v[1-t][cw];
			if(greutate[i] <= cw)
				v[t][cw] = max(v[t][cw], v[1-t][cw-greutate[i]] + profit[i]);
		}
	}
	printf("%d",v[1][G]);

	return 0;
}

//0 0 7 7 7  7  7  7  7  7 
//0 0 7 7 7 11 11 11 11 11