Cod sursa(job #2701194)

Utilizator andrei_ciobanuciobanu andrei andrei_ciobanu Data 30 ianuarie 2021 09:37:50
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <cstdio>

using namespace std;

#define MAX_ENERGY 5000
int Cost[MAX_ENERGY + 1];

#define MAX_COST 10000
#define INITIALIZE_VALUE MAX_ENERGY * MAX_COST + 1

void Initialize(int myArray[], int length, int value){
    int i;
    for (i = 1; i <= length; i ++){
        Cost[i] = value;
    }
}

int main()
{
    FILE *fin=fopen("energii.in", "r");

    int generators, minEnergy;
    fscanf(fin, "%d%d", &generators, &minEnergy);

    Initialize(Cost, minEnergy, INITIALIZE_VALUE);

    int energy, cost, i, j;
    for (i = 1; i <= generators; i++){
        fscanf(fin, "%d%d", &energy, &cost);

        for (j = minEnergy; j > energy; j--){
            Cost[j] = min(Cost[j], Cost[j - energy] + cost);

        }

        for (j = 1; j <= energy; j++){
            Cost[j]=min(cost, Cost[j]);
        }

    }
    fclose(fin);

    FILE *fout=fopen("energii.out", "w");

    int ans = Cost[minEnergy];
    if (ans == INITIALIZE_VALUE) ans = -1;

    fprintf(fout, "%d", ans);
    fclose(fout);
    return 0;
}