Cod sursa(job #2163156)

Utilizator Dragos123Tatar Dragos Vlad Dragos123 Data 12 martie 2018 16:56:45
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>

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

const int MaxN = 1001, MaxW = 15001;
const long long Inf = 2 * 0x3f3f3f3f;
int n, W, e[MaxN], c[MaxN];
long long a[MaxW], minim;

void ReadData();
void Solve();
void Write();

int main ()
{
    ReadData();
    Solve();
    Write();
}

void ReadData()
{
    fin >> n;
    fin >> W;

    for (int i = 1; i <= n; ++i)
        fin >> e[i] >> c[i];
}

void Solve()
{
    for (int i = 0; i <= MaxW; ++i)
        a[i] = Inf;

    a[0] = 0;

    for (int i = 1; i <= n; ++i)
        for (int j = W; j >= 0; --j)
            if (a[j] != Inf && a[j + e[i]] > a[j] + c[i])
                a[j + e[i]] = a[j] + c[i];

    minim = Inf;

    for (int i = W; i <= MaxW; ++i)
        if (a[i] < minim)
            minim = a[i];
}

void Write()
{
    if (minim != Inf)
        fout << minim;
    else
        fout << "-1";
}