Cod sursa(job #1814546)

Utilizator tonisnakesBoar Antonio tonisnakes Data 24 noiembrie 2016 10:29:42
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>
#define NMAX 5005
#define GMAX 10005
using namespace std;

ifstream fin ("rucsac.in");
ofstream fout ("rucsac.out");

int opt[2][GMAX];

int main () 
{
	int n, v;
	fin >> n >> v;
	for (int i = 0; i <= 1; ++i) {
		for (int j = 1; j <= v; ++j) {
			opt[i][j] = -1;
		}
	}
	int maxn = 0;
	for (int i = 1; i <= n; ++i) {
		int x, y;
		fin >> x >> y;
		for (int j = x; j <= v; ++j) {
			if (opt[(i-1)%2][j-x] != -1) {
				opt[i%2][j] = opt[(i-1)%2][j-x] + y;
			}
			opt[i%2][j] = max(opt[i%2][j],opt[(i-1)%2][j]);
			if (opt[i%2][j] > maxn) {
				maxn = opt[i%2][j];
			}
		}
	}
	fout << maxn;
	/*for (int i = 0; i <= 1; ++i) {
		for (int j = 1; j <= v; ++j) {
			cout << opt[i][j] << " ";
		}
		cout << endl;
	} */
	
	return 0;
}