Cod sursa(job #864567)

Utilizator dumitrualexAlex Dumitru dumitrualex Data 25 ianuarie 2013 12:05:40
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>

using namespace std;

struct obiect
{
    int pret, masa;
} lista[5005];

int profit[10005];
int n, masa_max;

int main()
{
    int i, j, maxim = 0;
    ifstream cin("rucsac.in");
    ofstream cout("rucsac.out");

    cin >> n >> masa_max;
    for (i = 0; i < n; i++)
        cin >> lista[i].masa >> lista[i].pret;
    for (i = 1; i <= masa_max; i++)
        profit[i] = -1;

    for (i = 0; i < n; i++)
    {
        for (j = masa_max - lista[i].masa; j >= 0; j--)
            if (profit[j] != -1 && profit[j] + lista[i].pret > profit[j+lista[i].masa])
            {
                profit[j+lista[i].masa] = profit[j] + lista[i].pret;
                if (profit[j+lista[i].masa] > maxim)
                    maxim = profit[j+lista[i].masa];
            }
    }

    cout << maxim;
    return 0;
}