Cod sursa(job #2123631)

Utilizator eduardvintilaVintila Eduard eduardvintila Data 6 februarie 2018 14:22:24
Problema Energii Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#define INF 1000000000

using namespace std;

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

int dp[1005][5005],w[1005],v[1005],n,S;

int ener(int i,int val)
{
    if (i==n)
    {
        if (val<S)
            return INF;
        else return 0;
    }
    if (dp[i][val]!=-1)
        return dp[i][val];

    int sol1=ener(i+1,val);
    int sol2=ener(i+1,val+v[i])+w[i];
    dp[i][val]=min(sol1,sol2);
    return dp[i][val];
}

int main()
{
    f>>n>>S;
    int i,j;
    for (i=0;i<n;i++)
    {
        f>>v[i]>>w[i];
    }
    for (i=0;i<=n;i++)
        for (j=0;j<=S;j++)
            dp[i][j]=-1;
    long sol = ener(0,0);
    if (sol==INF)
        g<<-1;
    else g<<sol;
    return 0;
}