Cod sursa(job #929867)

Utilizator andreiblaj17Andrei Blaj andreiblaj17 Data 27 martie 2013 12:19:37
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#define nmax 1005
#define gmax 5005
#define inf 1<<30
using namespace std;
 
 
int dp[nmax][gmax];
int main() {
    ifstream f("energii.in");
    ofstream g("energii.out");
     
    int n, energiemin, profit[nmax], cost[nmax], i, j;
     
    f>>n>>energiemin;
    for(i=1; i<=n; i++) f>>profit[i]>>cost[i];
     
    for(j=0; j<=energiemin; j++) dp[0][j] = inf;
    dp[0][0]=0;
         
     
    for(i=1; i<=n; i++)
        for(j=0; j<=energiemin; j++) {
            dp[i][j] = dp[i-1][j];
            if(profit[i]  >  j) dp[i][j] = min( dp[i][j], cost[i] );
            if(profit[i]  <= j) dp[i][j] = min( dp[i][j], cost[i] + dp[i-1][j - profit[i]] );
        
        }
   
    if(dp[n][energiemin]==inf) dp[n][energiemin] = -1;
    g<<dp[n][energiemin]<<"\n";
     
    f.close();
    g.close();
    return 0;
}