Pagini recente » Cod sursa (job #1834343) | Cod sursa (job #1415189) | Cod sursa (job #724508) | Cod sursa (job #2835546) | Cod sursa (job #1580050)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
using namespace std;
#define STDIN_FILE_OPEN(FileName) {freopen(FileName, "r", stdin);}
#define STDOUT_FILE_OPEN(FileName) {freopen(FileName, "w", stdout);}
static const int MAXN = 5005;
static const int MAXG = 10005;
static int knapcsack[MAXG];
typedef struct
{
int w, p;
}Item;
int main()
{
STDIN_FILE_OPEN("rucsac.in");
STDOUT_FILE_OPEN("rucsac.out");
int n, g;
scanf("%d %d", &n, &g);
vector<Item> items;
for (int i = 0; i < n; i++)
{
int w, p;
scanf("%d %d", &w, &p);
Item it;
it.w = w;
it.p = p;
items.push_back(it);
}
while (!items.empty())
{
Item it = items.back();
items.pop_back();
int w = it.w;
int p = it.p;
for (int i = g; i >= w; i--)
{
int pos = i - w;
if (knapcsack[pos] + p > knapcsack[i])
knapcsack[i] = knapcsack[pos] + p;
}
}
int maxP = 0;
for (int i = 0; i <= g; i++)
{
if (knapcsack[i] > maxP)
maxP = knapcsack[i];
}
printf("%d\n", maxP);
}