Cod sursa(job #1012841)

Utilizator vladrochianVlad Rochian vladrochian Data 19 octombrie 2013 18:27:18
Problema Problema rucsacului Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <cstdio>
#include <array>
#include <deque>
#define Max(a,b) ((a)>(b)?(a):(b))
using namespace std;
struct obiect
{
	int masa,profit;
}ob[5000];
int n,i,gmax,obs;
deque<array<int,10001>>a;
int main()
{
	freopen("rucsac.in","r",stdin);
	freopen("rucsac.out","w",stdout);
	scanf("%d%d",&n,&gmax);
	for (i=0;i<n;i++)
		scanf("%d%d",&ob[i].masa,&ob[i].profit);
	obs=0;
	while (obs<n)
	{
		a.resize(2);
		a[1][0]=1;
		for (i=1;i<ob[obs].masa;i++)
			a[1][i]=a[0][i];
		for (;i<=gmax;i++)
			a[1][i]=Max(a[0][i],ob[obs].profit+a[0][i-ob[obs].masa]);
		obs++;
		a.pop_front();
	}
	printf("%d\n",a[0][gmax]);
	return 0;
}