Cod sursa(job #935358)

Utilizator rudarelLup Ionut rudarel Data 3 aprilie 2013 08:54:12
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
long long a[100010];
long long k,sm,h,g,nr,m;
long i,n;
 
int calc(long long lim)
{
    long long s=0;
    long i;
    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("%lld",&a[i]);
        sm+=a[i];
    }
    search(1,sm/k);
    printf("%lld",nr);
    fclose(stdin);
    fclose(stdout);
}