Cod sursa(job #1714055)

Utilizator silkMarin Dragos silk Data 7 iunie 2016 11:38:13
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <cstdio>
#define NMax 16005

int v[NMax];
int n,k;

int is_good(int x)
{
    int i,j,sum,aux;

    aux = k;
    i = 1;
    while(aux && i <= n)
    {
        sum = 0;
        while( sum < x )
        {
           sum += v[i];
           i++;
        }
        if( sum > x ) i--;

    aux--;
    }

    if( i > n ) return 1;
    return 0;
}

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

    int st,dr,mid,i,ans;
    scanf("%d %d",&n,&k);

    for( i = 1; i <= n; ++i ) scanf("%d",&v[i]);
    for( st = 1, dr = NMax * NMax; st <= dr; )
    {
        mid = (st+dr)/2;
        if( is_good(mid) ) { ans = mid; dr = mid - 1; }
        else st = mid + 1;
    }

    printf("%d\n",ans);



return 0;
}