Cod sursa(job #1026662)

Utilizator the@EyE@Postavaru Stefan the@EyE@ Data 11 noiembrie 2013 21:02:44
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<stdio.h>
#define INF 160001

int n,k,v[INF],max=0;
int sum=0;

bool check(int cant)
{
    int k2=1,ad=0;
    for(int i=0;i<n;++i)
    {
        ad+=v[i];
        if(ad>cant)ad=0,k2++,--i;
        if(k2>k)return false;
    }
    return true;
}

int main()
{
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
    scanf("%d%d",&n,&k);
    for(int i=0;i<n;++i){scanf("%d",&v[i]);sum+=v[i];if(v[i]>max)max=v[i];}
    int st=max,dr=sum,m=(st+dr)>>1;
    while(st<dr)
    {
        if(check(m))dr=m;
        else st=m+1;
        m=(st+dr)>>1;
    }
    printf("%d\n",st);
    return 0;
}