Cod sursa(job #516971)

Utilizator mathboyDragos-Alin Rotaru mathboy Data 27 decembrie 2010 13:03:10
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <cstdio>
#include <string>
#define maxN 100005

#define ll long long
using namespace std;

int A[maxN], K, N;

inline bool check (ll val)
{
	ll x = 1LL * val * K;
	for (int i = 1; i <= N; i++) {
		A[i] < val ? x -= A[i] : x -= val;
		if (x <= 0) return 1;
	}
	return 0;
}
int main ()
{

	freopen ("grupuri.in", "r", stdin);
	freopen ("grupuri.out", "w", stdout);

	scanf ("%d %d\n", &K, &N);
	
	ll lf, ls, mid, S = 0, sol = 0;
	int i;
	for (i = 1; i <= N; i++) {

		scanf ("%d", &A[i]);
		S += A[i];
	}

	lf = 1; ls = S / (ll)K;

	while (lf <= ls) {

		mid = (lf + ls) >> 1;
		if (check (mid)) {
			
			sol = mid;
			lf = mid + 1;
		}
		else ls = mid - 1;
	}
	
	printf ("%lld\n", sol);

	return 0;
}