Cod sursa(job #1816907)

Utilizator Mstar_AngelComan Mara Stefania Mstar_Angel Data 27 noiembrie 2016 07:06:46
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>
#define EMAX 10000001
int costmin[10001];
int main (){
  FILE *in,*out;
  in = fopen ("energii.in","r");
  out = fopen ("energii.out","w");
  int n,cant,i,ener,minim,val,cost,j;

  //init cu cost max posibil
  for (i=1;i<=10001;i++)
    costmin[i] = 20000000;
  //costmi[0] = 0;

  fscanf (in,"%d%d",&n,&cant);
  ener = 0;
  for (i=1;i<=n;i++){
    fscanf (in,"%d%d",&val,&cost);
    ener = ener + val < EMAX ? ener + val : EMAX;
    //calc
    for (j=ener;j>=val;j--){
      if (costmin[j] > costmin[j-val] + cost)
        costmin[j] = costmin[j-val] + cost;
    }
  }

  minim = 20000000;
  for (i=cant;i <= 10001; i++)
    minim = costmin[i] < minim ? costmin[i] : minim ;
  if (minim == 20000000)
    fprintf(out,"-1");
  else
    fprintf(out,"%d",minim);

  fclose (in);
  fclose (out);
  return 0;
}