Cod sursa(job #40254)

Utilizator razvi9Jurca Razvan razvi9 Data 27 martie 2007 12:18:02
Problema Transport Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<stdio.h>
int max,s,a[16000],i,k,n;
int ver(int c)
{int s=0,nr=1;
 for(i=1;i<=n;i++)
 {if(s+a[i]>c) {s=0;nr++;if(nr>k) return 0;}
  s=s+a[i];}
 return 1;}
int caut(int st,int dr)
{int mij=(st+dr)/2,nr;
 if(st>dr) return 0;
 if(st==dr) return ver(st)?st:0;
 if(ver(mij)) {nr=caut(st,mij-1);return nr?nr:mij;}
 else return caut(mij+1,dr);}
int main()
{freopen("transport.in","r",stdin);
 freopen("transport.out","w",stdout);
 scanf("%d %d",&n,&k);
 for(i=1;i<=n;i++)
 {scanf("%d",&a[i]);
  if(a[i]>max) max=a[i];
  s=s+a[i];}
 printf("%d",caut(max,s));
 fclose(stdout);
 return 0;}