Cod sursa(job #1778650)

Utilizator RaresEGaySopterean Adrian RaresEGay Data 13 octombrie 2016 22:50:31
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <fstream>
#define INF 0x3f3f3f3f
using namespace std;

ifstream f("energii.in");
ofstream g("energii.out");

int N, W, E[1001], C[1001], A[5001];

int Min(int x, int y){
    return x < y ? x : y;
}

int main(){
    f >> N >> W;
    for(int i=1; i<=N; ++i) f >> E[i] >> C[i];

    for(int i=1; i<=W; ++i) A[i] = INF;
    A[0] = 0;

    for(int i=1; i<=N; ++i)
        for(int j=W; j>=0; --j)
            if(j + E[i] >= W)
                A[W] = Min(A[W], A[j] + C[i]);
            else A[j + E[i]] = Min(A[j + E[i]], A[j] + C[i]);

    if(A[W] != INF) g << A[W] << '\n';
    else g << -1 << '\n';
}