Cod sursa(job #119368)

Utilizator ProtomanAndrei Purice Protoman Data 30 decembrie 2007 22:18:14
Problema Grupuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>
long i,n,k;
long a[100010];
long long sm,h,g,nr,m;

int calc(long lim)
{
	long long i,s;
	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("%ld %ld",&k,&n);
	for (i=1;i<=n;i++)
	{
		scanf("%ld",&a[i]);
		sm+=a[i];
	}
	search(1,sm/k);
	printf("%ld",nr);
	fclose(stdin);
	fclose(stdout);
}