Cod sursa(job #1891374)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 23 februarie 2017 22:48:05
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#include <vector>
#include <cstring>
#include <algorithm>

int need, valueCount;
int values[100005];

inline bool Check(long long buckets) {
	long long count = 0;
	for (int i = 1; i <= valueCount; ++i)
		count += std::min(1LL * values[i], buckets);

	return (count >= buckets * need);
}

int main() {
	std::ifstream inputFile("grupuri.in");
	std::ofstream outputFile("grupuri.out");

	inputFile >> need >> valueCount;

	long long sum = 0;
	for (int i = 1; i <= valueCount; ++i) {
		inputFile >> values[i];
		sum += values[i];
	}

	long long left = 1, right = sum/need, ans = 0;
	while (left <= right) {
		int middle = (left + right) / 2;

		if (Check(middle)) {
			ans = middle;
			left = middle + 1;
		}
		else
			right = middle - 1;
	}

	outputFile << ans << '\n';

	inputFile.close();
	outputFile.close();

	return 0;
}

//Trust me, I'm the Doctor!