Pagini recente » Cod sursa (job #3299689) | Cod sursa (job #3299690) | Cod sursa (job #3300282) | Cod sursa (job #1197552) | Cod sursa (job #3296125)
#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;
}