Cod sursa(job #1064987)

Utilizator roxannemafteiuMafteiu-Scai Roxana roxannemafteiu Data 22 decembrie 2013 16:20:41
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>
long a[100010];
long long i,k,n,sm,h,g,nr,m;

int calc(long long lim)
{
    long long i,s=0;
    for (i=1;i<=n;i++)
    {
        if (a[i]>lim)
            s+=lim;
        else s+=a[i];
    }
    if (s>=k*lim)
        return 0;
    else return 1;
}

void search(long long li,long long ls)
{
    m=(li+ls)/2;
    h=calc(m);
    g=calc(m+1);
    if (h==1)
        search(li,m-1);
    else if (h==0 && g==1)
        nr=m;
         else search(m+1,ls);
}

int main()
{
    freopen("grupuri.in","r",stdin);
    freopen("grupuri.out","w",stdout);
    scanf("%lld %lld",&k,&n);
    for (i=1;i<=n;i++)
    {
        scanf("%ld",&a[i]);
        sm+=a[i];
    }
    search(1,sm/k);
    printf("%lld",nr);
    fclose(stdin);
    fclose(stdout);
}