Cod sursa(job #785414)

Utilizator radu_bucurRadu Bucur radu_bucur Data 8 septembrie 2012 23:27:12
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <fstream>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int a[5002],b[5002],c[50000020],i,j,maxi,g,n,s;
int main(){
	int n;
	in>>n>>g;
	s=0;
	
	for (i=1;i<=n;i++)
	{
		in>>a[i]>>b[i];
	}
	
	maxi=0;
	
	for (i=1;i<=50000010;i++) c[i]=-1;
	
	c[0]=0;
	
	for (i=1;i<=n;i++)
		for (j=maxi;j>=0;j--)
		{
			if (c[j]+b[i]>c[j+a[i]]&&c[j]!=-1)
			{
				c[j+a[i]]=c[j]+b[i];
				if (maxi<j+a[i]) maxi=j+a[i];
			}
		}
	
	i=g; maxi=0;
	
	while (i>=0)
	{
		if (c[i]>maxi) maxi=c[i];
		i--;
	}
	out<<maxi;
    return 0;
}