Cod sursa(job #2699329)

Utilizator YusyBossFares Yusuf YusyBoss Data 24 ianuarie 2021 11:09:07
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <stdio.h>
#define NMAX 1000
#define EMAX 10000

using namespace std;

int f[EMAX + 1]; // f[i] -- pretul minim cand energia totala este minim i

int minim(int a, int b) {
  return a < b ? a : b;
}

int main() {
  FILE *fin, *fout;
  int n, k, i, j, E, P;

  fin = fopen("energii.in", "r");
  fscanf(fin, "%d%d", &n, &k);

  for (i = 1; i <= k; i++)
    f[i] = EMAX * NMAX + 1;

  for (i = 0; i < n; i++) {
    fscanf(fin, "%d%d", &E, &P);

    for (j = k; j >= 0; j--)
      if (j - E >= 0 && f[j - E] <= EMAX * NMAX)
        f[j] = minim(f[j], f[j - E] + P);
      else if (j - E < 0)
        f[j] = minim(f[j], P);
  }
  fclose( fin );

  fout = fopen("energii.out", "w");
  if (f[k] <= EMAX * NMAX)
    fprintf(fout, "%d", f[k]);
  else
    fprintf(fout, "%d", -1);
  fclose( fout );
  return 0;
}