Cod sursa(job #272202)

Utilizator ConsstantinTabacu Raul Consstantin Data 6 martie 2009 16:24:49
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>

int v[17000],max1,sum,p,u,q,i,j,ok,k,l,m,n;

int caut(int val){
int sum=0,lvl=1;
for(i=1;i<=n;i++)
        {sum+=v[i];
        if(sum>val)
                {sum=v[i];lvl++;
                if(lvl>k)return 0;}
        }
return 1;}


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",&v[i]);
        sum+=v[i];
        if(v[i]>max1)max1=v[i];
        }

p=max1;u=sum;
while(p<u)
        {m=(p+u)>>1;
        ok=caut(m);
        if(ok)
                {sum=m;u=m;}
       else
                p=m+1;
       }
printf("%d",sum);
return 0;}