Cod sursa(job #1223932)

Utilizator TimitocArdelean Andrei Timotei Timitoc Data 29 august 2014 11:24:39
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#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;
}