Cod sursa(job #1570800)

Utilizator TudorVersoiuVersoiu Tudor Sorin TudorVersoiu Data 16 ianuarie 2016 20:51:41
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>
#define INFP 1<<30




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

int EG[1008], CG[1008], dp[1002][80000];


int main()
{
    long long g,w,nre=0;
    fin>>g>>w;
    for( int i=1 ; i<=g ; i++ )
    {
        fin>>EG[i]>>CG[i];
        nre+=EG[i];
    }
    for ( int i=0 ; i<=2 ; i++ )
        for ( int j=0 ; j<=w ; j++ )
            dp[i][j] = INFP;

    for( int i=1 ; i<=g ; i++ )
        for( int j=0 ; j<=w ; j++ )
            if(EG[i]<j)
                dp[i][j] = min(dp[i-1][j], dp[i-1][j-EG[i]]+CG[i]);
            else
                dp[i][j] = min(dp[i-1][j], CG[i]);

    if ( nre < w )
    {
        fout << -1;
        return 0;
    }
    fout<<dp[g][w];
}