Cod sursa(job #316287)

Utilizator drag0s93Mandu Dragos drag0s93 Data 18 mai 2009 23:31:26
Problema Grupuri Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<cstdio>

using namespace std;

#define IN "grupuri.in","r",stdin
#define OUT "grupuri.out","w",stdout

int N , K ;
int A[100020];
bool ok = false;
int verifica(int x)
{
	int sum = 0;
	for(int i =  1 ; i <= N ; ++i)
		if(A[i] > x)	sum += x;
		else sum += A[i];
	if(sum == x * K)	return 2;
	if(sum > x * K)	return 1;
	else return 0;
}
int main()
{
	freopen(IN);
	freopen(OUT);
	scanf("%d%d",&K,&N);
	for(int i = 1 ; i <= N ; ++i) scanf("%d",&A[i]);	
	int st = 1 , dr = 2000000 , m;
	while(st <= dr)
	{
		m = (st + dr) / 2;
		int nr = verifica(m);
		if(nr == 1)	st = m + 1;
		else if(nr == 0)dr = m - 1;
		if(nr == 2)
		{
			printf("%d\n",m);
			return 0;
		}
	}
	printf("%d\n",m);
	return 0;
}