Nu exista pagina, dar poti sa o creezi ...

Cod sursa(job #1888537)

Utilizator gabor.vlad13lil pump gabor.vlad13 Data 22 februarie 2017 10:32:40
Problema Problema rucsacului Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <cstdio>
#include <cstring>
#define NMAX 5005

using namespace std;

int n, g;

struct nr
{
    int greutate;
    int pret;
    nr(int a=0, int b=0)
    {
        greutate = a;
        pret = b;
    }
};

nr vec[NMAX];
int rez[NMAX];
int suma, maxim;

bool bun(int n)
{
    int check = 0;
    for (int i=1; i<=n; i++)
        check+=vec[rez[i]].greutate;
    if (check <= g)
        return true;
    return false;
}
void bt(int k = 1)
{
    for (int i=rez[k-1]+1; i<=n; i++)
    {
        rez[k] = i;
        suma+=vec[i].pret;
        if (bun(k))
        {
            if (suma > maxim)
                maxim = suma;
        }
        bt(k+1);
        suma-=vec[i].pret;

    }
}
void read()
{
    scanf("%d %d\n", &n, &g);
    for (int i=1; i<=n; i++)
        scanf("%d %d\n", &vec[i].greutate, &vec[i].pret);

}

int main()
{
    freopen("rucsac.in", "r", stdin);
    freopen("rucsac.out", "w", stdout);
    read();
    bt();
    printf("%d", maxim);
    return 0;
}