Cod sursa(job #1426007)

Utilizator stefan_creastaStefan Creasta stefan_creasta Data 28 aprilie 2015 19:10:42
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int GMAX=10001;
int d[GMAX];


int main()
{
    FILE *fin, *fout;
    int n;
    int g,i,q,j;
    fin=fopen("rucsac.in","r");
    fscanf(fin,"%d%d",&n,&g);
    d[0]=0;
    for(i=1;i<=g;++i)
		d[i]=-1;
	int maxdr=0;
    for(q=0;q<n;++q)
	{
		int w,p;
		fscanf(fin,"%d%d",&w,&p);
		for(j=maxdr;j>=0;--j)
			if(j+w<=g)
				if(d[j]!=-1){
					d[j+w]=max(d[j+w],d[j]+p);
					if(j+w>maxdr)
						maxdr=j+w;
				}
	}
	fclose(fin);
	int maxp=0;
	for(i=1;i<=g;++i)
	{
		if(d[i]>maxp)
			maxp=d[i];
	}
	fout=fopen("rucsac.out","w");
	fprintf(fout,"%d",maxp);
	fclose(fout);
    return 0;

}