Cod sursa(job #1070222)

Utilizator TudorMTudor Moldovanu TudorM Data 31 decembrie 2013 13:19:04
Problema Problema rucsacului Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int n, gmax, w[5001], p[5001], st[5001], pmax, suma, nr;
int valid(int k)
{
    int i;
    suma=nr=0;
    for(i=1;i<k;i++)
    {
        if(st[i]==st[k])return 0;
        suma+=w[st[i]];
        nr+=p[st[i]];
    }
    nr+=p[st[k]];
    suma+=w[st[k]];
    if(suma>gmax)return 0;
    if(nr<=pmax)return 1;
    else return nr;
}
void bkt(int k)
{
    int i, rez;
    for(i=1;i<=n;i++)
    {
        st[k]=i;
        rez=valid(k);
        if(rez)
        {
            if(rez>1)pmax=rez;
            if(k<n)bkt(k+1);
        }
    }
}
int main()
{
    int i;
    f>>n>>gmax;
    for(i=1;i<=n;i++)f>>w[i]>>p[i];
    bkt(1);
    g<<pmax;
    f.close();
    g.close();
    return 0;
}