Cod sursa(job #1041631)

Utilizator mads2194FMI - Andrei Stroe mads2194 Data 25 noiembrie 2013 23:00:10
Problema Transport Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <cstdio>
#include <algorithm>
#include <vector>

#define N 16002
#define MAX_STEP (1<<15)

using namespace std;

int n,k;
int sum[N];

int binsearch(int x)
{
    size_t i,step;
    for(i=0,step=MAX_STEP;step;step>>=1)
    {
        if(i+step<n && sum[i+step]<=x)
            i+=step;
    }
    return i;
}

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

    //int n,k;
    scanf("%d %d\n",&n,&k);

    int x;
    scanf("%d",&x);
    sum[0]=x;
    for(int i=1;i<n;++i)
    {
        scanf("%d",&x);
        sum[i]=sum[i-1]+x;
    }

    int S = sum[n-1];
    int i,j,last;
    for(i=S/k + (S%k>0);i<=S;++i)
    {
        last=0;
        for(j=0;j<k;++j)
        {
            last = sum[ binsearch(i+last) ];
        }
        if(last>=S)
        {
            printf("%d",i);
            return 0;
        }
    }

    return 0;
}