Cod sursa(job #1649223)

Utilizator lauratalaatlaura talaat lauratalaat Data 11 martie 2016 12:52:39
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
int v[16001],n;
int verif ( int cap ){
    int cate,s,i;
    cate=0;
    i=1;
    while(i<=n){
        s=0;
        while(s+v[i]<=cap&&i<=n){
            s=s+v[i];
            i++;
        }
        cate++;
    }
    return cate;
}
int main(){
    int k,i,st,dr,m,cate,r;
    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]);
    st=1;
    dr=256000000;
    while(st<=dr){
        m=(st+dr)/2;
        cate=verif(m);
        if(cate==k){
            r=m;
            dr=m-1;
        }
        else
            if(cate>k)
                st=m+1;
            else{
                r=m;
                dr=m-1;
            }
    }
    printf("%d\n",r);
    return 0;
}