Pagini recente » Cod sursa (job #1707931) | Cod sursa (job #3137798) | Cod sursa (job #673232) | Cod sursa (job #1838602) | Cod sursa (job #2291272)
#include <cstdio>
#include <algorithm>
using namespace std;
#define lli long long int
FILE *fin = freopen("grupuri.in", "r",stdin);
FILE *fout = freopen("grupuri.out","w",stdout);
static const int NMAX = 1e5+5;
lli n,k;
lli v[NMAX];
lli pref[NMAX];
lli sumTotal;
lli logN, pas;
lli log;
lli cb(lli x)
{
lli p = 0;
for(;log; log>>=1)
{
if(log+p <= n)
{
if(v[log+p] <= x)
p+=log;
}
}
return p;
}
bool Check(lli m)
{
lli s = 0;
lli poz = cb(m);
s+=pref[poz];
s+=(n-poz) * m;
if(s >= m * k)
return true;
return false;
}
int main()
{
scanf("%lld%lld",&k,&n);
for(log=1;log<=n;log<<=1);
for(int i= 1; i<= n; ++i)
{
scanf("%lld",&v[i]);
sumTotal+=v[i];
pref[i] = pref[i-1] + v[i];
}
for(logN = 1; logN <= sumTotal/k+1; logN<<=1);
for(;logN; logN >>=1)
{
if((pas + logN)*k <= sumTotal && Check((pas+logN)))
pas+=logN;
}
printf("%lld", pas);
return 0;
}