Cod sursa(job #2268069)

Utilizator petru.ciocirlanPetru Ciocirlan petru.ciocirlan Data 24 octombrie 2018 14:38:49
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
#include <cstdlib>

#define FILE_IN "energii.in"
#define FILE_OUT "energii.out"

const int INF = 0x3f3f3f3f;
const int MAXE = 10001;
int G, W;
int Rucsac[MAXE * 2];

int main()
{
    freopen(FILE_IN, "r", stdin);
    freopen(FILE_OUT, "w", stdout);

    scanf("%i %i", &G, &W);

    /// 0 excluded
    for(int i = 1; i <= W; ++i)
        Rucsac[i] = INF;

    int Sol = INF;
    while(G--)
    {
        int EG, CG;
        scanf("%i %i", &EG, &CG);

        for(int i = W - 1; i >= 0; --i)
            if(Rucsac[i + EG] > Rucsac[i] + CG)
            {
                Rucsac[i + EG] = Rucsac[i] + CG;
                if(i + EG >= W && Rucsac[i + EG] < Sol)
                        Sol = Rucsac[i + EG];
            }
    }

    if(Sol == INF)
        printf("-1\n");
    else
        printf("%i\n", Sol);

    return 0;
}