Cod sursa(job #1643210)

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

using namespace std;

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

int e[GMax], c[GMax], a[WMax], b[WMax], 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;
}