Cod sursa(job #1049488)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 7 decembrie 2013 13:21:23
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#define Nmax 1005
#define Wmax 5005
#define INF 2000000000

using namespace std;

int N,W,energ[Nmax],cost[Nmax],dp[Nmax][Wmax];

inline void Read()
{
    int i;
    ifstream fin("energii.in");
    fin>>N>>W;
    for(i=1;i<=N;++i)
        fin>>energ[i]>>cost[i];
    fin.close();
}

inline void Solve()
{
    int i,j;
    for(i=1;i<=N;++i)
        for(j=1;j<=W;++j)
            dp[i][j]=INF;
    dp[1][energ[1]]=cost[1];
    for(i=2;i<=N;++i)
        for(j=1;j<=W;++j)
        {
            dp[i][j]=dp[i-1][j];
            if(energ[i]<=j)
                dp[i][j]=min(dp[i][j], dp[i-1][j-energ[i]]+cost[i]);
            else
                dp[i][j]=min(dp[i][j], cost[i]);
        }

    ofstream fout("energii.out");
    if(dp[N][W]==INF)
        fout<<"-1\n";
    else
        fout<<dp[N][W]<<"\n";
    fout.close();
}

int main()
{
    Read();
    Solve();
    return 0;
}