Pagini recente » Cod sursa (job #653962) | Cod sursa (job #2490221) | Cod sursa (job #610899) | Cod sursa (job #887303) | Cod sursa (job #468118)
Cod sursa(job #468118)
#include<fstream>
using namespace std;
bool test(int v);
int n, k, cant[100001];
long long sum;
int main()
{
ifstream fin("grupuri.in");
ofstream fout("grupuri.out");
fin >> k >> n;
for (int i = 1; i <= n; ++i)
{
fin >> cant[i];
sum += cant[i];
}
sum /= k;
++sum;
int step, i;
for (step = 1; step << 1 <= sum; step <<= 1);
for (i = 0; step; step >>= 1)
if (i + step <= sum && test(i + step))
i += step;
fout << i;
}
bool test(int v)
{
int i; long long s = 0;
for (i = 1; i <= n; ++i)
if (cant[i] < v) s += cant[i];
else break;
s += v * (n - i + 1);
return s >= (long long)v * k;
}