Cod sursa(job #1759004)

Utilizator Cristi01052Tudorache Christian Cristi01052 Data 18 septembrie 2016 12:50:34
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>

using namespace std;
const int G = 1001, W = 5001, INF = 1005 * 10000;
int energie[G], cost[G], sume[W+G*10];
int main()
{
    FILE *in, *out;
    in = fopen ("energii.in", "r");
    out = fopen ("energii.out", "w");
    int g, w,i;
    fscanf(in , "%d %d", &g, &w);
    for(i = 1; i <= g; i++)
        fscanf(in, "%d %d", &energie[i],&cost[i]);
    for(i = 1; i <= w + G * 10; i++)
        sume[i] = INF;
    for(i = 1; i <= g; i++)
        for(int j = w + G * 10; j >= 0; j--)
        {
            if(j > w)
            {
                if(j - energie[i] >= 0 && sume[j - energie[i]] + cost[i] < sume[w])
                    sume[w] = sume[j - energie[i]] + cost[i];
            }
            else
                if(j - energie[i] >= 0 && sume[j - energie[i]] + cost[i] < sume[j])
                    sume[j] = sume[j - energie[i]] + cost[i];
        }
    if(sume[w] == INF)
        fprintf(out, "-1");
    else
        fprintf(out, "%d", sume[w]);
    return 0;
}