Cod sursa(job #1402657)

Utilizator emanuel_rRamneantu Emanuel emanuel_r Data 26 martie 2015 18:28:42
Problema Energii Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<iostream>
#include<fstream>
#include<cmath>
#define oo 1000000000

using namespace std;

ifstream f("energii.in");
ofstream g("energii.out");

int dp[1005][5005];
pair <int,int> a[1005];
int n, energ;

void citire()
{
    int i;
    f>>n>>energ;
    for(i=1; i<=n; i++){
        f>>a[i].first;
        f>>a[i].second;
    }
}

void dinam()
{
    int i,j,enmom=0;
    for(i=0; i<=n; i++)
        for(j=1; j<=energ; j++)
            dp[i][j] = oo;
    for(i=1; i<=n; i++){enmom+=a[i].first;
        for(j=1; j<=enmom && j<=energ; j++){
            if(a[i].first <= j)
                dp[i][j] = min(dp[i-1][j], dp[i-1][j-a[i].first] + a[i].second);
            else
                dp[i][j] = min(dp[i-1][j], a[i].second);
        }
    }

    g<<dp[n][energ]<<"\n";
}

int main()
{
    citire();
    dinam();
    return 0;
}