Cod sursa(job #1643199)

Utilizator danyvsDan Castan danyvs Data 9 martie 2016 18:03:45
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <cstring>
#define GMax 1001
#define WMax 5001
#define INF 2e9

using namespace std;

ifstream fin("energii.in");
ofstream fout("energii.out");

int e[GMax], c[WMax], a[GMax], b[GMax], G, W;
int mn;

void Citire()
{
    int i;
    fin >> G >> W;
    for (i = 1; i <= G; ++ i)
        fin >> e[i] >> c[i];
}

void Energii()
{
    int i, j;
    for (i = 1; i <= W; ++ i)
        a[i] = b[i] = INF;
    for (i = 1; i <= G; ++ i)
        {
         for (j = 1; j <= W; ++ j)
            if(j - e[i] >= 0) b[j] = min(a[j], a[j - e[i]] + c[i]);
            else b[j] = min(a[j], c[i]);
         memcpy(a, b, sizeof(b));
        }
}

int main()
{
    Citire();
    fin.close();
    Energii();
    if (a[W] != INF) fout << a[W] << "\n";
    else fout << -1 << "\n";
    fout.close();
    return 0;
}