Cod sursa(job #2358777)

Utilizator PopaAlbertPopa Albert-Ioan PopaAlbert Data 28 februarie 2019 12:44:39
Problema Transport Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<bits/stdc++.h>
#define NMAX 16001
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,i;
int a[NMAX];
bool ok(int c)
{
    int k0=k,cc=c;
    for(i=1;i<=n;i++)
    {
        if(a[i]>c)
            return false;
        if(a[i]<=cc)
            cc=a[i];
        else
        {
            k0--;
            if(k0<=0)
                return false;
            cc=c-a[i];
        }
    }
    return true;
}
int cautare_bin()
{
    int mij=0,st=1,dr=NMAX*NMAX,mini=-1;
    while(st<=dr)
    {
        mij=(dr-st)/2+st;
        if(ok(mij))
        {
            mini=mij;
            dr=mij-1;
        }
        else
            st=mij+1;
    }
    return mini;
}
int main()
{
    f>>n>>k;
    for(i=1;i<=n;i++)
        f>>a[i];
    g<<cautare_bin();
    return 0;
}