Cod sursa(job #2163129)

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

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

const int MaxN = 1001, MaxW = 5001, Inf = 1 << 30;
int n, W, e[MaxN], c[MaxN], 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()
{
    fout << minim;
}