Pagini recente » Monitorul de evaluare | Cod sursa (job #1878403) | Cod sursa (job #182953) | Cod sursa (job #1031683) | Cod sursa (job #1223928)
#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);
scanf("%d %d", &w, &p);
optim[w] = p;
for (int i = 1; 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);
}
}
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;
}