Cod sursa(job #120891)

Utilizator tamasgyGyorfi Tamas tamasgy Data 7 ianuarie 2008 01:08:20
Problema Grupuri Scor 56
Compilator c Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <stdio.h>

main()
{
    FILE* r;
    int e,q=0;
    unsigned long long a[100000],b[100000],k,n,m,d,t,l,i,s=0,x,y;
    r=fopen("grupuri.in","r");
    fscanf(r,"%lld %lld",&k,&n);
    for (i=1;i<=n;i++)
    {
        fscanf(r,"%lld",&a[i]);
        b[i]=a[i];
        s+=a[i];
    }
    fclose(r);
    l=s/k;
    d=1;
    t=l;
    do
    {
        x=(t+d)/2;
        for (i=1;i<=n;i++)
            a[i]=b[i];
        e=0;
        m=1;
        y=x;
        for (i=1;i<=n;i++)
        {
            if (a[i]>=x)
            {
                m++;
            }
            else
            {
            if (a[i]>=y)
            {
                a[i]=a[i]-y;
                m++;
                y=x-a[i];
                q=1;
            }
            else
            if (q==0)
                y=y-a[i];
            }
            if (m>k)
            {
                e=1;
                break;
            }
            q=0;
        }
        if (e==1)
            d=x+1;
        else
            t=x-1;
    }
    while (d<=t);
    r=fopen("grupuri.out","w");
    fprintf(r,"%lld",x);
    fclose(r);
}