Pagini recente » Cod sursa (job #1024020) | Cod sursa (job #1217845) | Cod sursa (job #1624232) | Cod sursa (job #1336335) | Cod sursa (job #1891374)
#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!