Cod sursa(job #2941275)

Utilizator cattyAninisCatrinel catty Data 17 noiembrie 2022 16:14:56
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
short n,k,i,v[16001],ma,o;
int s,st,dr,sq,m,pz;
bool vr(int sm)
{
    for(i=1,sq=0,o=1; i<=n; ++i)
    {
        if(sq+v[i]<=sm)
            sq+=v[i];
        else
            ++o,sq=v[i];
        if(o>k)
            return 0;
    }
    return 1;
}
int main()
{
    in>>n>>k;
    for(i=1; i<=n; ++i)
        in>>v[i],s+=v[i],ma=max(ma,v[i]);
    if(k==1)
    {
        out<<s;
        return 0;
    }
    if(k>=n)
    {
        out<<ma;
        return 0;
    }
    else
    {
        st=ma,dr=s;
        while(st<=dr)
        {
            m=(st+dr)/2;
            if(vr(m))
                pz=m,dr=m-1;
            else st=m+1;
        }
        out<<pz;
    }
}