Cod sursa(job #817460)

Utilizator irinaneaguIrina Neagu irinaneagu Data 17 noiembrie 2012 13:56:19
Problema Transport Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>
int v[16001];
int main (){
    freopen ("transport.in","r",stdin);
    freopen ("transport.out","w",stdout);
    int nr,i,capmin=0,capmax=0,n,k,s=0,l1,l2,m,mprec;
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++){
        scanf("%d",&v[i]);
        if(v[i]>capmin)
            capmin=v[i];
        capmax+=v[i];}
    l1=capmin-1;
    l2=capmax+1;
    while(l1<=l2){
        s=0;
        if((l1+l2)%2!=0)
            m=(l1+l2)/2+1;
        else
            m=(l1+l2)/2;
        nr=1;
        for(i=1;i<=n;i++){
            if(s+v[i]<=m)
                s+=v[i];
            else{
                nr++;
                s=v[i];}
    }
        if(nr<=k){
            l2=m-1;}
        else{
            l1=m+1;
            }
    }
    printf("%d",m);
    return 0;
}