Cod sursa(job #2472248)

Utilizator borscalinCalin-Stefan Georgescu borscalin Data 12 octombrie 2019 10:39:45
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include <iostream>
#include <fstream>
#define NMAX 5000
#define GMAX 10000

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

int N, G;
int dp[2][1 + GMAX];
int weigth[1 + NMAX];
int profit[1 + NMAX];

int main() {

	std::cin >> N >> G;

	for ( int i = 1; i <= N; ++i )
		//std::cin >> weigth[i] >> profit[i];
		fin >> weigth[i] >> profit[i];
	int current = 1;
	int last = 0;

	for ( int i = 1; i <= N; ++i ) {
		for ( int w = 1; w <= G; ++w )
			dp[current][w] = std::max ( dp[last][G], dp[last][G - weigth[i]] + profit[i] );
		std::swap ( current, last );
	}

	//std::cout << dp[last][G] << '\n';
	fout << dp[last][G] << '\n';
	
	return 0;
}