Cod sursa(job #1238103)

Utilizator NicusorTelescu Nicolae Nicusor Data 5 octombrie 2014 17:28:37
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <cstdio>
#define BOZZ 5001

using namespace std;

struct LOL
{
    int profit,greutate;
}obiect[BOZZ];

int n,g,linie_de_rezolvare[10001],n1=1;

void citire()
{
    scanf("%d %d",&n,&g);
    for (int i=1;i<=n;i++)
    {
        scanf("%d %d",&obiect[i].greutate,&obiect[i].profit);
    }
}

void rezolvare()
{
    while (n1<=n)
    {
        for (int i=g;i>=1;i--)
        {
            if (linie_de_rezolvare[i-obiect[n1].greutate]!=0&&i>obiect[n1].greutate)
                if (linie_de_rezolvare[i]<obiect[n1].profit+linie_de_rezolvare[i-obiect[n1].greutate])
                    linie_de_rezolvare[i]=obiect[n1].profit+linie_de_rezolvare[i-obiect[n1].greutate];
            if (i-obiect[n1].greutate==0&&linie_de_rezolvare[i]<obiect[n1].profit)
                linie_de_rezolvare[i]=obiect[n1].profit;
        }
        n1++;
    }
}

int main()
{
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    citire();
    rezolvare();
    int max=0;
    for (int i=1;i<=g;i++) if (max<linie_de_rezolvare[i]) max=linie_de_rezolvare[i];
    printf("%d",max);
}