Cod sursa(job #1049248)

Utilizator frostwareDumitrascu Constantin frostware Data 7 decembrie 2013 09:38:17
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>

#define inFile  "energii.in"
#define outFile "energii.out"

#define NMAX    1005
#define GMAX    5005

#define max(a,b)    (a>b?a:b)

int n, g;
int d[NMAX][GMAX];

int main() {
    freopen(inFile, "r", stdin);
    freopen(outFile, "w", stdout);

    scanf("%d %d", &n, &g);

    bool printed = false;

    for(int i = 1, j, ei, ci; i <= n; i++) {
        scanf("%d %d", &ei, &ci);
        for(j = 1; j <= g; j++) {
            if(ei <= j) {
                d[i][j] = max(d[i-1][j], ci + d[i-1][j-ei]);
            } else {
                d[i][j] = d[i-1][j];
            }
            if(g <= d[i][j]) {
                printf("%d\n", d[i][j]);
                printed = true;
                return 0;
            }
        }
    }

    if(!printed) {
        printf("-1\n");
    }

    return 0;
}