Cod sursa(job #1735299)

Utilizator andreea_dumitrascuDumitrascu Andreea andreea_dumitrascu Data 29 iulie 2016 14:23:23
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <cstdio>

using namespace std;

int n,k,v[16000];

bool ok(int mid)
{
    int s=0,i=0,sum=0;
    bool ok=1;
    for(;k&&i<=n;k--)
    {
        while(sum<=mid&&i<=n)
        {
            sum+=v[++i];
        }
    }
    if(i>=n) return 1;
    return 0;
}

int main()
{
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
    scanf("%d%d",&n,&k);
    int maxx=0,sum=0;
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&v[i]);
        if(maxx<v[i]) maxx=v[i];
        sum+=v[i];
    }
    int ls,ld,mid;
    ls=maxx;ld=sum;
    while(ls<=ld)
    {
        mid=(ls+ld)/2;
        if(ok(mid)) ls=mid+1;
        else ld=mid-1;
    }
    printf("%d",ls+1);
    return 0;
}