Cod sursa(job #1426218)

Utilizator patrickdanDan patrick patrickdan Data 29 aprilie 2015 10:09:29
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 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,g,p,dr,pmax,j;
    scanf("%d%d",&n,&GMAX);
    d[0]=0;
    for(i=1;i<=GMAX;i++)
		d[i]=-1;
	dr=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;
					}
	}
	if(d[GMAX]!=-1)
		pmax=d[GMAX];
	else
	for(i=GMAX-1;i>=1;i--)
		if(d[i]>pmax)
			pmax=d[i];
	printf("%d",pmax);
    return 0;
}