Pagini recente » Cod sursa (job #3175701) | Cod sursa (job #1022062) | Cod sursa (job #2614758) | Cod sursa (job #706240) | Cod sursa (job #1210389)
#include<stdio.h>
#include<vector>
using namespace std;
FILE *in, *out;
vector<pair<int, int>> V;
int N, G, D[2][10000];
void open()
{
in = fopen("rucsac.in", "rt");
out = fopen("rucsac.out", "wt");
}
void read()
{
fscanf(in, "%d %d", &N, &G);
for (int i = 0; i < N; i++)
{
int w, p;
fscanf(in, "%d %d", &w, &p);
V.push_back(make_pair(w, p));
}
}
void dp()
{
D[1][0] = 0;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= G; j++)
{
int alt = i % 2;
D[alt][j] = D[1 - alt][j];
if (j >= V[i - 1].first)
{
if (D[alt][j] < D[1 - alt][j - V[i - 1].first] + V[i - 1].second)
{
D[alt][j] = D[1 - alt][j - V[i - 1].first] + V[i - 1].second;
}
}
}
}
void write()
{
int alt = N % 2;
fprintf(out, "%d", D[alt][G]);
}
int main()
{
open();
read();
dp();
write();
return 0;
}