Cod sursa(job #2176412)

Utilizator mutza2Petran George Stelian mutza2 Data 17 martie 2018 11:49:38
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <iostream>
#include <fstream>

using namespace std;
int e[1001],c[1002];
long long dold[17000],dnew[17001];

int main()
{
    int g,w,j,i,wmax,maxx,minn;
    ifstream cmin("energii.in");
    ofstream cmout("energii.out");
    cmin>>g>>w;
    maxx=-100000;
    minn=-1;
    for(j=1;j<=g;++j){
        cmin>>e[j]>>c[j];
        if(e[j]>maxx){
            maxx=e[j];
        }
    }
    wmax=w+maxx;
    for(j=0;j<=wmax;++j){
        dold[j]=-1;
        dnew[j]=-1;
    }
    dold[0]=0;
    dnew[0]=0;
    for(i=1;i<=g;++i){
        /*
        dnew[0]=0;
        for(j=1;j<=wmax;++j){
            dnew[j]=-1;
        }*/

        for(j=0;j<=w;++j){

            if(dold[j]==-1){
                dnew[j+e[i]]=dold[j+e[i]];
            }
            else if(dold[j+e[i]]==-1){
                dnew[j+e[i]]=dold[j]+c[i];
            }
            else{
                dnew[j+e[i]]=min(dold[j+e[i]],dold[j]+c[i]);
            }


        }
        for(j=0;j<=wmax;++j){
            dold[j]=dnew[j];
        }


    }
    for(j=w;j<=wmax;++j){

        if((dnew[j]<minn || minn==-1)&& dnew[j]!=-1){minn=dnew[j];}

    }
    cmout<<minn<<endl;

}