Cod sursa(job #1059353)

Utilizator cadirmDirman Catalin cadirm Data 16 decembrie 2013 16:42:57
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("rucsac.in");
ofstream out("rucsac.out");

struct obiect
{
    int g, p;
};

obiect v[5001];

int profit[10001];

int main()
{
    int k,i,j,n,max=0;
    in>>n>>k;
    for(i=1;i<=n;i++)
        in>>v[i].g>>v[i].p;
    for(i=1;i<n;i++)
        profit[i]=-1;
    profit[0]=0;
    for(i=1;i<=n;i++)
        for(j=k-v[i].g ; j>=0 ; j--)
            if(profit[j] != -1 && profit[j]+v[i].p > profit[j+v[i].g])
                profit[j+v[i].g] = profit[j] + v[i].p;
    for(i=1;i<=k;i++)
        if(profit[i]>max)
            max = profit[i];
    out << max << "\n";
    return 0;
}