Cod sursa(job #2296056)

Utilizator rares404AlShaytan - Balasescu Rares rares404 Data 4 decembrie 2018 11:15:33
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
#define MIN(a, b) (((a) > (b)) ? (b) : (a))

int n, g, e, p ;
int v[5001] ;

int main() {
    freopen("energii.in", "r", stdin) ;
    freopen("energii.out", "w", stdout) ;
    register int i, j ;
    scanf("%d %d", &n, &g) ;
    for (i = 1 ; i <= g ; ++ i)
        v[i] = (1 << 30) ;
    for (i = 1 ; i <= n ; ++ i) {
        scanf("%d %d", &e, &p) ;
        for (j = g ; j >= 0 ; -- j)
            if (j <= e) {
                v[j] = MIN(v[j], p) ;
            } else {
                v[j] = MIN(v[j], v[j - e] + p) ;
            }
    }
    if (v[g] != (1 << 30)) {
        printf("%d", v[g]) ;
    } else {
        printf("-1") ;
    }
    return 0;
}