Cod sursa(job #994889)

Utilizator gbi250Gabriela Moldovan gbi250 Data 6 septembrie 2013 15:57:11
Problema Energii Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int i, g, W, cc, energy[1001], cost[1001], cost_temp[20001], MIN=0x3f3f3f3f;
bool format[20001];

int main()
{
    freopen("energii.in", "r", stdin);
    freopen("energii.out", "w", stdout);
    scanf("%d %d", &g, &W);

    for(i=1; i<=g; ++i)
        scanf("%d %d", &energy[i], &cost[i]);

    format[0]=1;

    for(i=1; i<=g; ++i)
        for(cc=W; cc>=0; --cc)
            if( format[cc] ) // se pot avea cc W
            {
                format[ cc + energy[i] ]=1; // deci putem forma cc + energia curenta W
                cost_temp[ cc + energy[i] ] = cost_temp[cc] + cost[i]; // costul energiei va fi costul energiei curente + costul energiei vechi
                if(cc+energy[i]>=W && cost_temp[ cc + energy[i] ] < MIN)
                    MIN=cost_temp[ cc + energy[i] ];
            }
    printf("%d\n", MIN);
    return 0;
}