Cod sursa(job #1803381)

Utilizator DanaPalangean7A Daria Palangean DanaPalangean Data 11 noiembrie 2016 12:58:54
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>
#include <iostream>
using namespace std;

int v[16001];
int main(){
    freopen("transport.in","r", stdin);
    freopen("transport.out","w",stdout);
    int n, k, i, l1=0, l2=0, m, a, sum, tr;
    cin>>n>>k;
    for(i=0;i<n;i++) {
        cin>>v[i];
        l2 += v[i];
        if(v[i]>l1)
        l1=v[i];
    }
    while(l1 != l2) {
        m=(l1+l2)/2;
        sum=0;
        tr=1;
        for(i=0;i<n && tr<=k;i++) {
            if(v[i] + sum <= m )
                sum+=v[i];
            else{
                tr++;
                sum=v[i];
            }
        }
        if(tr>k)
            l1=m+1;
        else
        l2=m;
    }
    cout<<l1;
    return 0;
}