Pagini recente » Cod sursa (job #2981930) | Cod sursa (job #2173953) | Cod sursa (job #14531) | Cod sursa (job #3123045) | Cod sursa (job #71185)
Cod sursa(job #71185)
#include <cstdio>
using namespace std;
#define Max 20000000000LL
#define Nmax 100001
int v[Nmax], N, K;
int bun(long long m);
int main()
{
freopen("grupuri.in","r",stdin);
freopen("grupuri.out","w",stdout);
long long lo,hi,m;
scanf("%d%d",&K,&N);
for (int i=1;i<=N;++i)
scanf("%d",&v[i]);
lo=1; hi=Max+1;
while (lo<=hi)
{
m=(lo+hi)/2;
if (bun(m)==0)
hi=m-1;
else
lo=m+1;
}
printf("%lld\n",hi);
return 0;
}
int bun(long long m)
{
//deci vreau sa fac m grupuri de K animale ... big deal ...
int tmp = 0;
long long poz = 1;
for (int i=1;i<=N;++i)
if (v[i] >= m) ++tmp;
else
{
poz += v[i];
if (poz > m) poz -= m, ++tmp;
}
if (tmp >= K) return 1;
return 0;
}