Cod sursa(job #2272259)

Utilizator Anastasia11Susciuc Anastasia Anastasia11 Data 29 octombrie 2018 21:47:26
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 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;
    }

    //k[i][j]=costul minim din primele i generatoare cu costul j

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

    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= w; j++)
        {
            if(j-a[i].c < 0) k[i][j]=min(k[i-1][j], a[i].e);
            k[i][j]=min(k[i-1][j], a[i].e+k[i-1][j-a[i].c]);
        }
    /*for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= w; j++)
            cout << k[i][j] << " ";
        cout << '\n';
    }*/
    g << k[n][w];


    return 0;
}