Cod sursa(job #936567)

Utilizator PavelRazvanPavel Razvan PavelRazvan Data 7 aprilie 2013 19:29:10
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
// pb13.cpp : main project file.

//#include "stdafx.h"

//using namespace System;

#include<cstdio>
#include<algorithm>
//#include<conio.h>

using namespace std;

#define DIM 5003
#define DIMG 10003

struct obj {
	int w, p;
} a[DIM];
int n, g, sol[5][DIMG];

void read() {

	scanf("%d %d", &n, &g);
	for(int i = 1; i <= n; ++i)
		scanf("%d %d", &a[i].w, &a[i].p);
}

void solve() {

	int i, j, with_obj;

	for(i = a[1].w; i <= g; ++i)
		sol[1][i] = a[1].p;

	for(i = 2; i <= n; ++i)
		for(j = 1; j <= g; ++j) {
			if(j - a[i].w >= 0)
				with_obj = sol[(i-1)%2][j - a[i].w] + a[i].p;
			else
				with_obj = 0;

			sol[i%2][j] = max(with_obj, sol[(i-1)%2][j]);
		}

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

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

	read();
	solve();

	//getch();
    return 0;
}