Cod sursa(job #615522)

Utilizator AndreyPAndrei Poenaru AndreyP Data 9 octombrie 2011 21:53:00
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <stdio.h>
#define G 10010

int n,g;
int a[G];

inline void adauga() {
	int w,p;
	scanf("%d%d",&w,&p);

	for(int i=g-w; i>=0; --i) {
		if(a[i]==0)
			continue;

		if(a[i+w] < a[i]+p)
			a[i+w] = a[i]+p;
	}

	if(a[w] < p)
		a[w] = p;
}

inline int rezultat() {
	int r = 0;
	
	for(int i=0; i<=g; ++i) {
		if(r<a[i])
			r = a[i];
	}

	return r;
}

int main() {
	freopen("rucsac.in","r",stdin);
	freopen("rucsac.out","w",stdout);

	scanf("%d%d",&n,&g);
	for(int i=0; i<n; ++i)
		adauga();
	printf("%d\n",rezultat());

	return 0;
}