Cod sursa(job #178493)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 14 aprilie 2008 17:58:27
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>

long n,i,a[16005],st,dr,mid,k,t;

long nrtrans(long x){
     long r=0,t=1;
     for (i=1;i<=n;i++)
         if (a[i]+r<=x)r+=a[i];
         else {t++;r=a[i];}
return t;
}
int main(){
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
    
    st=1;
    scanf("%ld %ld",&n,&k);
    for (i=1;i<=n;++i){
        scanf("%ld",&a[i]);
        if (a[i]>st)st=a[i];
        dr+=a[i];
    }
    
    while (st<dr){
          mid=(st+dr)/2;
          t=nrtrans(mid);
          if (t<=k)
             dr=mid;
          else st=mid+1;
    }
    
    printf("%ld\n",st);
    
return 0;
}