Pagini recente » Cod sursa (job #1820566) | Cod sursa (job #858046) | Cod sursa (job #1270748) | Cod sursa (job #508439) | Cod sursa (job #1223932)
#include <iostream>
#include <cstdio>
#include <algorithm>
#define MAXG 10005
using namespace std;
int n, g;
int optim[MAXG];
void actualizare(int ind, int p);
int maxp();
void sol()
{
int w, p;
scanf("%d %d", &n, &g);
for (int i = 0; i < n; i++)
{
scanf("%d %d", &w, &p);
for (int j = g; j >= 0; j--)
{
if (optim[j] != 0)
actualizare(j+w, optim[j]+p);
}
actualizare(0 + w, p);
}
printf("%d", maxp());
}
void actualizare(int ind, int p)
{
if (ind > g)
return;
if (p > optim[ind])
optim[ind] = p;
}
int maxp()
{
int maxim = -1;
for (int i = 0; i <= g; i++)
if (optim[i] > maxim)
maxim = optim[i];
return maxim;
}
int main()
{
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
sol();
return 0;
}