Cod sursa(job #3154696)

Utilizator Alex_HossuHossu Alexandru Alex_Hossu Data 5 octombrie 2023 17:28:00
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>

#define MAX_E 10002
#define INT_MAX 1000000007

int d[MAX_E];

static inline int min(int a, int b) { return a < b ? a : b; }
static inline int max(int a, int b) { return a > b ? a : b; }

int main() {
  FILE *fin, *fout;
  int g, w;
  int e, c;
  int m, i;
  int res;

  fin = fopen("energii.in", "r");

  fscanf(fin, "%d%d", &g, &w);

  for (i = 1; i < w; i++)
    d[i] = INT_MAX;

  res = INT_MAX;
  for (m = 0; m < g; m++) {
    fscanf(fin, "%d%d", &e, &c);
    for (i = w - 1; i >= w - e; i--)
      if (d[i] + c < res)
        res = d[i] + c;
    for (i = w - e - 1; i > 0; i--)
      if (d[i] + c < d[i + e])
        d[i + e] = d[i] + c;
    if (d[e] > c)
      d[e] = c;
  }

  fclose(fin);

  if (res == INT_MAX)
    res = -1;

  fout = fopen("energii.out", "w");
  fprintf(fout, "%d", res);
  fclose(fout);

  return 0;
}