Cod sursa(job #2496902)

Utilizator HumikoPostu Alexandru Humiko Data 21 noiembrie 2019 20:18:33
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <algorithm>
#include <stack>
#include <queue>
#include <deque>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <cstring>

using namespace std;

//#include <iostream>
#include <fstream>

//ifstream cin ("input.in");
//ofstream cout ("output.out");

ifstream cin ("rucsac.in");
ofstream cout ("rucsac.out");

static const int NMAX = 5e3+5;
static const int GMAX = 1e4+5;

int dp[GMAX];
pair <int, int> object[NMAX];

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);

	int n, g;
	cin>>n>>g;

	for ( int i = 1; i <= n; ++i ) {
		cin>>object[i].first>>object[i].second;
	}

	for ( int i = 1; i <= n; ++i ) {
		for ( int j = g-object[i].first; j >= 0; --j ) {
			dp[j+object[i].first] = max(dp[j+object[i].first], dp[j]+object[i].second);
		}
	}

	int ans = 0;
	for ( int i = 0; i <= g; ++i ) {
		ans = max(ans, dp[i]);
	}

	cout<<ans<<'\n';
}