Cod sursa(job #1726630)

Utilizator TibiraducanuTiberiu Raducanu Tibiraducanu Data 8 iulie 2016 15:38:45
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <cstdio>

using namespace std;

const int N=16005;
int n,k,x,maxx,v[N];

bool Solve(int x)
{
    int cnt=1,s=0;
    for(int i=1;i<=n;i++)
    {
        if(s+v[i]>x) cnt++, s=v[i];
        else s+=v[i];
    }

    return cnt<=k;
}

int BinSearch(int in, int sf)
{
    if(in==sf) return in;
    int mij=(in+sf)/2;
    if(Solve(mij)) return BinSearch(in,mij);
    return BinSearch(mij+1,sf);
}

int main()
{
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);

    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&v[i]);
        if(v[i]>maxx) maxx=v[i];
    }

    x=BinSearch(maxx,16000);
    printf("%d\n",x);

    return 0;
}