Cod sursa(job #1346585)

Utilizator vladttturcuman vlad vladtt Data 18 februarie 2015 13:22:46
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>

using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");

int cc,e,c,n,w,a[5001],b[5001];

void rucsac(int a[],int b[])
{
    for(int i=1;i<=w;i++)
        b[i]=0;

    if(e>=w)
    {
        if(cc>c)
            cc=c;
    }
    else
        b[e]=c;

    for(int i=1;i<=w;i++)
        if(a[i]!=0)
        {
            if(i+e>=w)
            {
                if(a[i]+c<cc) cc=a[i]+c;
            }
            else
                if(b[i+e]>a[i]+c || b[i+e]==0)
                    b[i+e]=a[i]+c;

            if(b[i]>a[i] || b[i]==0)
                b[i]=a[i];
        }
}

int main()
{
    fin>>n>>w;
    cc=1000002;

    for(int i=1;i<=n;i++)
    {
        fin>>e>>c;

        if(i%2==1)
            rucsac(b,a);

        else
            rucsac(a,b);
    }

    if(cc==1000002)
        fout<<-1;
    else
        fout<<cc<<'\n';
    return 0;
}