Cod sursa(job #1469094)

Utilizator MrTudorTudor Savulescu MrTudor Data 7 august 2015 16:13:55
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<iostream>
#include<fstream>
#include<cmath>
#define oo 1000000000

using namespace std;

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

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

void citire()
{
    int i;
    in>>n>>energ;
    for(i=1; i<=n; i++){
        in>>a[i].first;
        in>>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);
        }
    }
    if(dp[n][energ] == oo)
        out<<-1<<'\n';
    else
        out<<dp[n][energ]<<'\n';
}

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