Cod sursa(job #1241979)

Utilizator FayedStratulat Alexandru Fayed Data 13 octombrie 2014 21:09:46
Problema Problema rucsacului Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <cstdio>
#include <algorithm>
#define NMAX 5000
#define GMAX 10000
using namespace std;

int n,G;
int Dynamic[NMAX][GMAX];
int Cost[NMAX];
int Weight[NMAX];
int Pmax;

inline void read(){

	freopen("rucsac.in","r",stdin);
  freopen("rucsac.out","w",stdout);
  scanf("%d%d",&n,&G);

  for(register int i = 1; i<= n; ++i)
  	scanf("%d%d",&Weight[i], &Cost[i]); 

}

inline void PD(){

	for(register int numberOfObj = 1; numberOfObj <= n; ++numberOfObj)
		for(register int currentWeight = 0; currentWeight <= G; ++currentWeight){

			Dynamic[numberOfObj][currentWeight] = Dynamic[numberOfObj-1][currentWeight];

			if(Weight[numberOfObj] <= currentWeight)
				Dynamic[numberOfObj][currentWeight] = max(Dynamic[numberOfObj][currentWeight],
				                                          Dynamic[numberOfObj-1][currentWeight - Weight[numberOfObj]]
				                                          + Cost[numberOfObj]);
		}  

Pmax = Dynamic[n][G];
printf("%d",Pmax);

}

int main(){

	read();
	PD();

return 0;
}