Cod sursa(job #1472029)

Utilizator mariakKapros Maria mariak Data 15 august 2015 22:21:23
Problema Energii Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>
#include <algorithm>
#define Dim 1002
#define Inf 2000000001

using namespace std;
int N, E, e[Dim], c[Dim], i, j, v[Dim * 15], sol = Inf;
int maxc;
void read()
{
    freopen("energii.in", "r", stdin);
    freopen("energii.out", "w", stdout);
    scanf("%d %d", &N, &E);
    for(i = 1; i <= N; ++ i)
    {
        scanf("%d %d", &e[i], &c[i]);
        if(c[i] > maxc)
        maxc = c[i];
    }
    for(i = 1; i <= E + maxc; ++ i)
        v[i] = Inf;
}
void rucsac()
{
    for(i = 1; i <= N; ++ i)
        for(j = E + e[i]; j >= e[i]; -- j)
        {
            v[j] = min(v[j], v[j - e[i]] + c[i]);
            if(j >= E)
                sol = min(sol, v[j]);
        }
}
int write()
{
    if(sol == Inf)
        printf("-1\n");
    else
        printf("%d\n", sol);
}
int main()
{
    read();
    rucsac();
    write();
    return 0;
}