Cod sursa(job #1402460)

Utilizator demetriad-dagpagDavid Demetriad demetriad-dagpag Data 26 martie 2015 16:39:23
Problema Transport Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>
#include <stdlib.h>
int v[16001];
int cautbin(int n,int s,int z)
{
    int j=0,pas=1<<30,i=0,k=0;
    while(pas!=0)
    {
        if(j+pas<=n && v[j+pas]-v[i]<=s)
            j+=pas;
        if(v[j]-v[i]>=s  || (pas==1 && j>i))
        {
            if(v[j]-v[i]>s)
                j--;
            pas=1<<15;
            i=j;
            k++;
        }
        else
            pas/=2;
    }
    if(k>z || j<n)
        return 0;
    return 1;
}
int main()
{
    int n,k,i,x,s,fl;
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
    scanf("%d%d",&n,&k);
    for(i=1; i<=n; i++)
    {
        scanf("%d",&x);
        v[i]=v[i-1]+x;
    }
    s=v[n]/k;
    if(s*k<n)
        s++;
    fl=0;
    while(fl==0 && s<v[n])
    {
        fl=cautbin(n,s,k);
        s++;
    }
    s--;
    printf("%d\n",s);

    return 0;
}