Cod sursa(job #420324)

Utilizator edp100Edp100 edp100 Data 18 martie 2010 19:52:14
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<stdio.h>
#define ll long long

int k,n;
int v[100003];
ll s,st,dr,m;

int calcul(int loc)
{
    int cloc=loc;
    int nr=0,i=1;
    while(nr<k && i<=n)
    {
        if(v[i]>loc)
        {
            nr++;
            i++;
            continue;
        }
        cloc-=v[i];
        if(cloc<1)
        {
            cloc+=loc;
            nr++;
        }
        i++;
    }
    if(nr<k)
        return 0;
    return 1;
}

int main ()
{
    int r,i;
    freopen("grupuri.in","r",stdin);
    freopen("grupuri.out","w",stdout);
    scanf("%d%d",&k,&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&v[i]);
        s+=v[i];
    }
    st=1;dr=s/k;
    while(st<=dr)
    {
        m=(st+dr)/2;
        r=calcul(m);
        if(!r)
            dr=m-1;
        else
            st=m+1;
    }
    printf("%lld\n",dr);
    return 0;
}