Cod sursa(job #2444809)

Utilizator alex.cojocaruAlex Cojocaru alex.cojocaru Data 1 august 2019 15:07:26
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>

#define GMAX 1001
#define WMAX 10001
#define INFINIT 1000000000

using namespace std;

struct gen {
  int e ;
  int cst ;
};

gen v [ GMAX + 1 ] ;
int gr [ WMAX + 1 ] ;

int main() {

  FILE *fin, *fout ;
  fin = fopen ("energii.in", "r" ) ;
  fout = fopen ("energii.out", "w" ) ;
  int g, w, i, j, poz, minim ;
  fscanf (fin, "%d%d", &g, &w ) ;
  for (i = 0 ; i <= WMAX ; i++ )
    gr[i] = INFINIT ;
  for (i = 1 ; i <= g ; i++ )
    fscanf (fin, "%d%d", &v[i].e, &v[i].cst ) ;
  poz = 0 ;
  minim = INFINIT ;
  for (i = 1 ; i <= g ; i++ ) {
    for (j = WMAX ; j >= v[i].e ; j-- ) {
      gr[j] = min (gr[j], gr[j-v[i].e] + v[i].cst ) ;
      if (j >= w && gr[j] < gr[poz] )
        poz = j ;
    }
    if (gr[v[i].e] > v[i].cst )
      gr[v[i].e] = v[i].cst ;
  }
  if (poz == 0 )
    fprintf (fout, "-1" ) ;
  else {
    fprintf (fout, "%d", gr[poz] ) ;
  }
  return 0;
}