Cod sursa(job #967111)

Utilizator livliviLivia Magureanu livlivi Data 27 iunie 2013 10:06:20
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<cstdio>
using namespace std;
int v[16001];
int nr_tr(int vol,int n){
    int i,nr=1,s=0;
    for(i=1;i<=n;i++){
        if (s+v[i]>vol){
            s=0;
            nr++;
        }
        s+=v[i];
    }
    return nr;
}
int main(){
    freopen ("transport.in","r",stdin);
    freopen ("transport.out","w",stdout);
    int n,k,i,dr=0,st=0;
    scanf ("%d%d",&n,&k);
    for(i=1;i<=n;i++){
        scanf ("%d",&v[i]);
        dr+=v[i];
        if (v[i]>st) st=v[i];
    }
    while(st<dr){
        if (nr_tr((dr+st)/2,n)<=k) dr=(st+dr)/2;
        else st=(dr+st)/2+1;
    }
    printf ("%d",st);
    return 0;
}