Cod sursa(job #1426219)

Utilizator bogdi1bogdan bancuta bogdi1 Data 29 aprilie 2015 10:10:31
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <cstdio>
#include <algorithm>
using namespace std;
const int DMAX=10005;
int d[DMAX];
int main()
{	freopen("rucsac.in", "r",stdin);
	freopen("rucsac.out", "w",stdout);
	int n,gmax,i,dr,pmax,g,p,j,max;
	scanf("%d%d", &n, &gmax);
	for(i=1; i<=gmax; i++)
		d[i]=-1;
	dr=0;
	pmax=0;
	for(i=1; i<=n; i++){
		scanf("%d%d", &g, &p);
		for(j=dr; j>=0; j--){
			if(j+g<=gmax){
				if(d[j]!=-1){
					if(d[j+g]<d[j]+p){
						d[j+g]=d[j]+p;
						if(j+g>dr)
							dr=j+g;
					}
				}
			}
		}
	}
	max=0;
	for(i=1; i<=gmax; i++)
		if(max<d[i])
			max=d[i];
    printf("%d", max);
    return 0;
}