Cod sursa(job #2535745)

Utilizator cyg_Alex_codegicianBarbu Alexandru cyg_Alex_codegician Data 1 februarie 2020 11:07:02
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <climits>
using namespace std;
ifstream fin ("energii.in");
ofstream fout ("energii.out");
int main()
{
    int n,w,v[1005],c[1005],lim=0;
    fin >> n >> w;
    for (int i=1;i<=n;i++)
    {
        fin >> v[i] >> c[i];
    }
    int dp[2][lim+5];
    for (int i=0;i<=lim;i++)
    {
        if (i>v[1]) dp[0][i]=INT_MAX;
        else dp[0][i]=c[1];
    }
    for (int i=2;i<=n;i++)
    {
        for (int j=1;j<=lim;j++)
        {
            if (v[i]>=j) dp[1][j]=min(dp[0][j],c[i]);
            else if (dp[0][j-v[i]]!=INT_MAX) dp[1][j]=min(dp[0][j],dp[0][j-v[i]]+c[i]);
            else dp[1][j]=dp[0][j];
        }
        for (int j=0;j<=lim;j++)
        {
            dp[0][j]=dp[1][j];
        }
    }
    if (dp[1][n]!=INT_MAX) fout << dp[1][n];
    else fout << -1;
}