Pagini recente » Cod sursa (job #1134758) | Cod sursa (job #1147048) | Cod sursa (job #1443571) | Monitorul de evaluare | Cod sursa (job #1944891)
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
#include <queue>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
const int NMax = 5e3 + 5;
const int GMax = 1e4 + 5;
typedef long long ll;
int N,G;
int dp[2][GMax];
int main()
{
in>>N>>G;
for (int i=1;i<=N;++i) {
int gr,pr;
in>>gr>>pr;
for (int j=1;j<=G;++j) {
dp[1][j] = dp[0][j];
int val = j - gr;
if (val >= 0 && dp[1][j] < dp[0][val] + pr) {
dp[1][j] = dp[0][val] + pr;
}
}
for (int j=1;j<=G;++j) {
dp[0][j] = dp[1][j];
}
}
out<<dp[0][G]<<'\n';
in.close();out.close();
return 0;
}