Cod sursa(job #883266)

Utilizator zanca.alexZanca Alexandru zanca.alex Data 19 februarie 2013 21:20:37
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>

using namespace std;

int g, w, cmin=-1, c=0, e=0;

struct gen
{
    int e,c;
}
a[1001];

int x[1001];

char valid (int k)
{
    int i, ok;
    ok=1;
    if (e+a[x[k]].e>w) ok=0;
    else
    {
        for (i=1; i<=k-1; i++)
        if (x[k]==x[i]) ok=0;
    }
    return ok;
}

void back(int k)
{
    int val;
    for (val=1; val<=g; val++)
    {
        x[k]=val;
        if (valid(k))
        {
            c+=a[x[k]].c;
            e+=a[x[k]].e;
            if (e==w)
            {
                if (cmin==-1)
                {
                    cmin=c;
                    c=0;
                    e=0;
                }
                else if (c<cmin)
                {
                    cmin=c;
                    c=0;
                    e=0;
                }
            }
            else back(k+1);
        }
    }
}

int main()
{
    int i;
    ifstream f ("energii.in");
    ofstream h ("energii.out");
    f>>g>>w;
    for (i=1; i<=g; i++) f>>a[i].e>>a[i].c;
    back(1);
    h<<cmin;
    h.close();
    f.close();
    return 0;
}