Cod sursa(job #980368)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 4 august 2013 16:28:34
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<stdio.h>

#define NMAX 1007
#define INF 10000007

int g, w;
int c[NMAX][3];
int e[NMAX], cost[NMAX];

int main(){
    freopen("energii.in", "r", stdin);
    freopen("energii.out", "w", stdout);
    scanf("%d %d", &g, &w);
    for(int i = 1; i <= g; ++ i)
        scanf("%d %d", &e[i], &cost[i]);
    for(int i = 0; i <= w; ++ i)
        c[i][1] = INF;
    for(int j = 1; j <= g; ++ j)
    {
        for(int i = 1; i <= w; ++ i)
            if(i > e[j] && c[i - e[j]][1] + cost[j] < c[i][1])
                c[i][2] = cost[j] + c[i - e[j]][1];
            else
                if(i <= e[j] && cost[j] < c[i][1])
                    c[i][2] = cost[j];
                else
                    c[i][2] = c[i][1];
        for(int i = 1; i <= w; ++ i)
            c[i][1] = c[i][2];
    }
    if(c[w][1] == INF)
        printf("-1\n");
    else
        printf("%d\n", c[w][1]);
    return 0;
}