Cod sursa(job #2366528)

Utilizator darius2k2Floroiu Darius Eduard darius2k2 Data 4 martie 2019 20:40:49
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <cstdio>
using namespace std;

int v[16001];
int main()
{
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
    int N,i,K,s,maxx,st,dr,m,a,k;
    cin>>N>>K;
    s=0;
    maxx=-1;
    for(i=1;i<=N;i++){
        cin>>v[i];
        s+=v[i];
        if(v[i]>maxx)
            maxx=v[i];
    }
    st=maxx;
    dr=s;
    while(st<=dr){
        m=(st+dr)/2;
        i=1;
        while(i<=N){
            s=0;
            while(s+v[i]<=m){
                s+=v[i];
                i++;
            }
            k++;
        }
        if(k<=a && k<=K)
            a=m;
        if(m==st)
            st++;
        else
            dr=m-1;
    }
    cout<<a;
    return 0;
}