Cod sursa(job #2065697)

Utilizator AnduRazvanMindrescu Andu AnduRazvan Data 14 noiembrie 2017 00:51:44
Problema Transport Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <stdio.h>
#include <stdlib.h>
int n,k;
int a[16002];
int Verif(int cap)
{ int i,summax=0,nrk=0;
    for(i=1;i<=n;i++)
    if(a[i]>cap) return 0;else
    if(summax+a[i]>cap)
     {nrk++;summax=a[i];
     if(nrk==k+1) return 0;}
     else summax+=a[i];
     nrk++;
     if(nrk>k) return 0;
     return 1;
}
int Cautbin()
{ int st=1;
  int dr=256000000,mij,nr;
  while(st<dr)
  { mij=st+(dr-st)/2;
       nr=Verif(mij);
      if(nr==1) dr=mij-1;
      else if(nr==0) st=mij+1;
  }
  return st;

}
int main()
{ int i;
  FILE *f,*g;
  f=fopen("transport.in","r");
  g=fopen("transport.out","w");
  fscanf(f,"%d %d",&n,&k);
  for(i=1;i<=n;i++)
   fscanf(f,"%d",&a[i]);
   fprintf(g,"%d",Cautbin());
    return 0;
}