Cod sursa(job #1581880)

Utilizator CodrutLemeniCodrut Lemeni CodrutLemeni Data 27 ianuarie 2016 11:47:55
Problema Transport Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
#include <stdlib.h>

int v[16100];
int n,k,max,x;


int main(){
    int i;
    int voln,t,nr;
    int dr,st,s;

    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);

    scanf("%d%d",&n,&k);

    for(i=0;i<n;i++){
        scanf("%d",&v[i]);
        if(v[i]>max){
            max=v[i];
        }
    }

    dr=n*max;
    st=max;
    while(st<=dr){
        nr=1;
        voln=(st+dr)/2;
        for(i=1;i<=n;i++){
            s+=v[i];
            if(s>voln){
                nr++;
                s=v[i];
            }
        }
        if(s<=voln){
            if(nr==k){
                x=voln;
            }
            if(nr>k){
                st=voln+1;
            }else{
                dr=voln-1;
            }
            s=0;
        }
    }
    printf("%d",st);
    return 0;
}