Pagini recente » Cod sursa (job #1917887) | Cod sursa (job #2451030) | Cod sursa (job #2675839) | Istoria paginii runda/aparitii_sir/clasament | Cod sursa (job #1943467)
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
#include <algorithm>
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];
struct elem {
int w,p;
}v[NMax];
int main()
{
in>>N>>G;
for (int i=1;i<=N;++i) {
in>>v[i].w>>v[i].p;
for (int j=1;j<=G;++j) {
dp[1][j] = dp[0][j];
int val = j - v[i].w;
if (0 <= val && dp[1][j] < dp[0][val] + v[i].p) {
dp[1][j] = dp[0][val] + v[i].p;
}
}
for (int j=1;j<=G;++j) {
dp[0][j] = dp[1][j];
}
}
out<<dp[0][G]<<'\n';
in.close();out.close();
return 0;
}