Cod sursa(job #2367672)

Utilizator marcogoldPop Mihali Marco Silviu marcogold Data 5 martie 2019 11:53:34
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda pregatire_cls12_oji Marime 0.95 kb
#include <iostream>
#include <fstream>

using namespace std;

ofstream fo("energii.out");
ifstream fi("energii.in");


int nrGen;
int Wnecesari;
int Cost[5005];
int Produs[5005];
int dp[100004];
/// dp[i] cantitatea minina pentru i W
int main()
{
    fi>>nrGen>>Wnecesari;

    for(int i=1; i<=nrGen; i++)
        fi>>Produs[i]>>Cost[i];



    for(int i=1; i<=Wnecesari+10001; i++)
        dp[i]=-1;

    for(int i=1; i<=nrGen; i++)
    {
        for(int j=0; j<=Wnecesari; j++)
        {
            if( dp[j+Produs[i]]> dp[j]+Cost[i] || dp[j+Produs[i]]==-1 )
                if(dp[j]!=-1)
                    dp[j+Produs[i]]=dp[j]+Cost[i];

        }
    }

    int minim=1000000000;

    for(int i=Wnecesari; i<=Wnecesari+10000; i++)
        if(dp[i]!=-1)
            minim=min(minim,dp[i]);

    if(minim==1000000000)
        fo<<-1;
    else
        fo<<minim;


    fi.close();
    fo.close();
    return 0;
}