Pagini recente » Cod sursa (job #442403) | Cod sursa (job #2614795) | Borderou de evaluare (job #1581330) | Cod sursa (job #1169587) | Cod sursa (job #2701194)
#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;
}