Cod sursa(job #2615983)

Utilizator vladburacBurac Vlad vladburac Data 16 mai 2020 01:54:52
Problema Energii Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
#include <stdlib.h>
#define MAX_W 5000
#define MAX_ENERGIE 10000

int v[MAX_W+MAX_ENERGIE], e[1000], c[1000];
int main() {
  FILE *fin, *fout;
  int G, W, i, g, nr, min, s;
  fin = fopen ( "energii.in", "r" );
  fscanf ( fin, "%d%d", &G, &W );
  s = 0;
  for ( i = 0; i < G; i++ ) {
    fscanf ( fin, "%d%d", &e[i], &c[i] );
    s += e[i];
  }
  fclose ( fin );
  if ( s >= W ) {
    min = 50000000;
    for ( nr = 0; nr < G; nr++ ) {
      for ( g = MAX_W + MAX_ENERGIE; g >= c[nr]; g-- ) {
        v[g] = v[g] > v[g-c[nr]] + e[nr] ? v[g] : v[g-c[nr]] + e[nr];
        if ( v[g] >= W ) {
          if ( g < min )
            min = g;
        }
      }
    }
  }
  else
    min = -1;
  fout = fopen ( "energii.out", "w" );
  fprintf ( fout, "%d", min );
  fclose ( fin );
  return 0;
}