Cod sursa(job #2272280)

Utilizator Anastasia11Susciuc Anastasia Anastasia11 Data 29 octombrie 2018 22:19:47
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <iostream>
#define Nmax 1003
#define INF (1<<29)

using namespace std;

string file="energii";

ifstream f( (file + ".in").c_str() );
ofstream g( (file + ".out").c_str() );

struct pwr{
int e, c;
}a[Nmax];

int k[Nmax][5*Nmax];
int n, w, et;

int main()
{

    f >> n >> w;

    for (int i = 1; i <= n; i++)
        {f >> a[i].e >> a[i].c;
            et+=a[i].e;
        }
    if(et < w)
    {
        g << "-1";
        return 0;
    }

    for (int i = 0; i <= n; i++)
        k[i][0]=INF;

    for (int i = 0; i <= w; i++)
        k[0][i]=INF;

    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= w; j++)
        {
            if(j <= a[i].e)
                k[i][j]=min(k[i-1][j], a[i].c);
            else
                k[i][j]=min(k[i-1][j], k[i-1][j-a[i].e]+a[i].c);
        }

    g << k[n][w];
    return 0;
}