Cod sursa(job #1726634)

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

using namespace std;
int n,k,nr,maxx,sum,v[16005];

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]);
        sum+=v[i];
        if(v[i]>maxx) maxx=v[i];
    }
    printf("%d\n",BinSearch(maxx,sum));

    return 0;
}