Cod sursa(job #2297782)

Utilizator vladboss2323Ciorica Vlad vladboss2323 Data 6 decembrie 2018 16:04:52
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream in("rucsac.in");
ofstream out("rucsac.out");
  /*
    profit[j] = profitul maxim care se poate obtine cu obiecte care au suma greutatilor j
    profit[0] = 0;
    for (int j = 1; j <= k; j++)
    {
        profit[j] = -1;
    }
    for (int i = 1; i <= n; i++)
    {
        for (int j = k - g[i]; j >= 0; j--)
        {
            profit[j+g[i]] = max(profit[j+g[i]], profit[j] + p[i]);
        }
    }
    max pe profit
 */

const int N=5005;
const int G=10005;

int profit[G],p[N],g[N],k,n;
int main()
{
    int i,j,maxim=0;
    in>>n>>k;
    for(i=1;i<=n;i++)
        in>>g[i]>>p[i];
    profit[0]=0;
    for(i=1;i<=k;i++)
        profit[i]=-1;
    for(i=1;i<=n;i++)
    {
        for(j=k-g[i];j>=0;j--)
        {
            profit[j+g[i]]=max(profit[j+g[i]],profit[j]+p[i]);
        }
    }
    for(i=1;i<=k;i++)
        if(maxim<profit[i])
           maxim=profit[i];
    out<<maxim;
    return 0;
}