Cod sursa(job #2239813)

Utilizator liviu2000Dragomirescu Liviu liviu2000 Data 11 septembrie 2018 21:40:41
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;

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

int dp[5][5005] ;
int e[1005] , c[1005] ;

int main()
{
    int i , j , g , w , p , q ;
    fin >> g >> w ;
    for ( i = 1 ; i <= g ; i++ )
        fin >> e[i] >> c[i] ;
    p = 0 ;
    q = 1 ;
    for ( i = 1 ; i <= w ; i++ )
    {
        dp[p][i] = 0x3f3f3f3f ;
        dp[q][i] = 0x3f3f3f3f ;
    }
    for ( i = 1 ; i <= g ; i++ )
    {
        p = 1-p ;
        q = 1-q ;
        for ( j = 1 ; j <= w ; j++ )
        {
            if ( j-e[i] >= 0 )
                dp[p][j] = min(dp[q][j],dp[q][j-e[i]] + c[i]) ;
            else
                dp[p][j] = min(dp[q][j],c[i]) ;
        }
    }
    if ( dp[p][w] == 0x3f3f3f3f )
        fout << "-1" ;
    else
        fout << dp[p][w] ;
}