Cod sursa(job #2375627)

Utilizator CosaMateiMatei Cosa Gabriel CosaMatei Data 8 martie 2019 11:07:08
Problema Transport Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("transport.in");
ofstream out("transport.out");

const int N=16002;

int maxim,k,n;

int v[N];

bool isOk(int c)
{
    if(maxim>c)
    {
        return false;
    }
    int sc=0;
    int t=1;
    for(int i=1;i<=n;++i)
    {
        if(v[i]+sc<=c)
        {
            sc+=v[i];
        }
        else
        {
            t++;
            sc=v[i];
        }
    }
    return (t<=k);
}

int binarySearch()
{
    int pas=1<<16;
    int ans=0;
    while(pas)
    {
        if(!isOk(ans+pas))
        {
            ans+=pas;
        }
        pas/=2;
    }
    return ans+1;
}

int main()
{
    in>>n>>k;
    for(int i=1;i<=n;++i)
    {
        in>>v[i];
        maxim=max(maxim,v[i]);
    }
    out<<binarySearch();
    return 0;
}