Cod sursa(job #1495074)

Utilizator tgm000Tudor Mocioi tgm000 Data 2 octombrie 2015 15:39:11
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<cstdio>
int v[16001];
int main(){
    int n,k,ls,ld,i,mij,t,s,max;
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
    scanf("%d%d",&n,&k);
    ls=ld=0;
    for(i=1;i<=n;i++){
        scanf("%d",&v[i]);
        if(v[i]>ls)
            ls=v[i];
        ld+=v[i];
    }
    while(ls<=ld){
        mij=(ld+ls)/2;
        t=0;
        for(i=1;i<=n;){
            s=0;
            while(s+v[i]<=mij&&i<=n){
                s+=v[i];
                i++;
            }
            t++;
        }
        if(t<=k){
            max=mij;
            ld=mij-1;
        }
        else
            ls=mij+1;
    }
    printf("%d",max);
    return 0;
}