Cod sursa(job #864057)

Utilizator rares_adrianRares Adrian rares_adrian Data 24 ianuarie 2013 17:18:38
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <cstdio>
using namespace std;

int prod[12][2],rux[12],n,g,maxi;

void citire()
{
    scanf("%d %d",&n,&g);
    for(int i=1;i<=n;i++)
        scanf("%d %d",&prod[i][0],&prod[i][1]);
    for(int i=1;i<=g;i++)
        rux[i]=-1;
}

void afisare()
{
    maxi=rux[1];
    for(int i=2;i<=g;i++)
        if(rux[i]>maxi)
            maxi=rux[i];
    printf("%d",maxi);
}

void prelucrare()
{
    rux[prod[1][0]]=prod[1][1];
    for(int i=2;i<=n;i++)
        {
            for(int j=g-prod[i][0];j>=0;j--)
                {
                    if(prod[i][1]+rux[j]>rux[j+prod[i][0]])
                        if(j+prod[i][0]>-1)
                            rux[j+prod[i][0]]=prod[i][1]+rux[j];
                          else
                            rux[j+prod[i][0]]=prod[i][1];
                }
        }
}

int main()
{
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
citire();
prelucrare();
afisare();


    return 0;
}