Pagini recente » Cod sursa (job #3762) | Cod sursa (job #2768557) | Cod sursa (job #418130) | Cod sursa (job #2565256) | Cod sursa (job #2570298)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <utility>
#include <cmath>
#include <string>
#include <cstring>
#include <queue>
using namespace std;
const int INF = 1e9 + 5;
int main() {
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int n, g;
in >> n >> g;
vector<pair<int, int>> v(n + 1); /// {greutate, profit}
for(int i = 1; i <= n; i ++)
in >> v[i].first >> v[i].second;
vector<int> dp(g + 1, 0);
dp[0] = 0;
for(int i = 1; i <= n; i ++) {
for(int j = g - v[i].first; j >= 0; j --)
dp[j + v[i].first] = max(dp[j] + v[i].second, dp[j + v[i].first]);
}
int ans = 0;
for(int i = 0; i <= g; i ++)
ans = max(ans, dp[i]);
out << ans;
return 0;
}