Cod sursa(job #1077765)

Utilizator vld7Campeanu Vlad vld7 Data 11 ianuarie 2014 17:20:06
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream f("grupuri.in");
ofstream g("grupuri.out");

const int MAX_N = 100005;

int N, K, a[MAX_N];
long long sum;

void read() {
	f >> K >> N;
	for (int i = 1; i <= N; i++) {
		f >> a[i];
		sum += 1LL * a[i];
	}
}

bool isGood (long long X) {
	long long nr = 0, must = 1LL * X * K;
	
	for (int i = 1; i <= N; i++)
		nr += min ((long long)a[i], X);
	
	if (nr >= must)
		return 1;
	return 0;
}

long long solve (long long lo, long long hi) {
	long long ret;
	
	while (lo <= hi) {
		long long mid = (lo + hi) / 2;
		if (isGood (mid)) {
			ret = mid;
			lo = mid + 1;
		} else {
			hi = mid - 1;
		}
	}
	
	return ret;
}

int main() {
	read();
	g << solve (1, sum / K);
	
	return 0;
}