Cod sursa(job #3296125)

Utilizator fantomcristi fantom Data 11 mai 2025 16:50:46
Problema Grupuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
#include <vector>
#include<numeric>
#include<algorithm>
using namespace std;
ifstream cin("grupuri.in");
ofstream cout("grupuri.out");
int main() {
	int AnimalePerGrup, NrDeGrupuri=0,n;
	cin >> AnimalePerGrup>> n;
	vector<int>SirDeAnimale(n);
	for (int i = 0; i < n; i++) {
		cin >> SirDeAnimale[i];
	}
	long long stanga = 0, dreapta = accumulate(SirDeAnimale.begin(), SirDeAnimale.end(), 0LL) / AnimalePerGrup;
	while (stanga <= dreapta) {
		long long mijloc = stanga + (dreapta - stanga) / 2;
		long long count = 0;
		for (int i = 0; i < n; i++) {
			count += min((long long)SirDeAnimale[i], mijloc);
		}
		if (count >= mijloc * AnimalePerGrup) {
			NrDeGrupuri = mijloc;
			stanga = mijloc + 1;
		}
		else {
			dreapta = mijloc - 1;
		}
	}
	cout << NrDeGrupuri;
}