Cod sursa(job #982571)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 9 august 2013 14:40:08
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int A[102][502];

int main()
{
    freopen ("energii.in", "r", stdin);
    freopen ("energii.out", "w", stdout);

    int G, W;
    scanf ("%d %d", &G, &W);

    int w[1002], c[1002];
    for(int i = 0; i < G; ++i) scanf ("%d %d", &w[i], &c[i]);

    for(int i = 0; i <= W; ++i) A[0][i] = 200000000;
    for(int j = 0; j <= G; ++j) A[j][0] = 200000000;

    for(int e = 1; e < G; ++e)
        for(int s = 1; s <= W; ++s)
            if(s <= w[e])
                A[e][s] = min(c[e], A[e-1][s]);
            else
                A[e][s] = min(A[e-1][s], c[e] + A[e-1][s-w[e]]);


    if(A[G-1][W] == 200000000) printf ("%d", -1);
    else printf ("%d", A[G-1][W]);
}

/*
void SubMult()
{
    int i, k, n = G, a, g;

    for(int i = 1; i <= n, i++)
    {
        if(A[i][k] < a[i + 1][ k / 2])
            k++;

        else
            g++;

        if(k < g)
            break;
    }
}*/