Cod sursa(job #1959499)

Utilizator cyg_vladioanBirsan Vlad cyg_vladioan Data 9 aprilie 2017 16:08:56
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
#include <algorithm>
using namespace std;
int d[1000005];
int main()
{
    freopen("energii.in" , "r" , stdin);
    freopen("energii.out" , "w" , stdout);
    int n , g , v , G , i , j , last , minim;
    scanf("%d%d" , &n , &G);
    d[0] = 0;
    last = 0;
    for(i = 1 ; i <= 1000000 ; i ++)
        d[i] = -1;
    for(i = 1 ; i <= n ; i ++)
    {
        scanf("%d%d" , &g , &v);
        for(j = last ; j >= 0 ; j --)
        {
            if(d[j + g] != -1)
                d[j + g] = min(d[j + g] , d[j] + v);
            else
                d[j + g] = d[j] + v + 1;
            if(j + g > last)
                last = j + g;
        }
    }
    minim = d[G];
    for(j = G + 1 ; j <= last ; j ++)
        if(d[j] < minim)
            minim = d[j];
    if(G <= last)
        printf("%d\n" , minim);
    else
        printf("-1\n");
    return 0;
}