Cod sursa(job #1028547)

Utilizator Sm3USmeu Rares Sm3U Data 14 noiembrie 2013 13:17:31
Problema Problema rucsacului Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>
#define nMax 5010
#define gMax 100010
#define max(a, b) ((a > b)?a:b)

using namespace std;


struct ceva{
	int val;
	int kg;
};


int n;
int g;

int s[nMax][gMax];
ceva a[nMax];

void citire(){
	scanf("%d %d", &n, &g);
	for (int i = 1; i <= n; ++i){
		scanf("%d %d", &a[i].kg, &a[i].val);
	}
}

void rezolvare(){
	for (int i = 1; i <= n; ++i){
		for (int j = 1; j <= g; ++j){
			s[i][j] = max(s[i - 1][j], s[i][j - 1]);
			if (a[i].kg > j){
				continue;
			}
			s[i][j] = max(s[i][j], a[i].val + s[i - 1][j - a[i].kg]);

		}
	}
	printf("%d\n", s[n][g]);
}

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

	return 0;
}