Cod sursa(job #2699132)

Utilizator Remus.RughinisRemus Rughinis Remus.Rughinis Data 23 ianuarie 2021 18:36:11
Problema Energii Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <stdio.h>
#include <stdlib.h>
#define MAX 15000

int p[1000],c[1000],a[MAX],b[MAX];
int main(){
  int n,e,i,j,max;
  FILE *fin, *fout;

  fin=fopen("energii.in","r");
  fscanf(fin,"%d%d",&n,&e);
  for(i=0;i<n;i++)
    fscanf(fin,"%d%d",&p[i],&c[i]);
  fclose(fin);

  for(i=0;i<MAX;i++)
    a[i]=b[i]=-1;
  a[0]=0;
  b[0]=0;

  for(i=0;i<n;i++){
    for(j=0;j<MAX;j++){
      if(a[j]!=-1 && j+p[i]<MAX){
        if(a[j+p[i]]>a[j]+c[i] || a[j+p[i]]==-1)
          b[j+p[i]]=a[j]+c[i];
      }
      a[j]=b[j];
    }
  }

  fout=fopen("energii.out","w");
  max=-1;
  for(i=e;i<MAX;i++){
    if((b[i]<max && b[i]>-1) || max==-1)
      max=b[i];
  }
  fprintf(fout,"%d\n",max);
  fclose(fout);
  return 0;
}