Pagini recente » Cod sursa (job #1679121) | Cod sursa (job #890198) | Monitorul de evaluare | Cod sursa (job #936487) | Cod sursa (job #119869)
Cod sursa(job #119869)
#include <cstdio>
using namespace std;
long v[100100],x[100100],n,k,i,t,l,r,m;
int marmota_este_ucisa(long c)
{
long i,s=0,j;
for (i=1;i<=n;i++)
x[i]=v[i];
j=n;
for (i=k;i>=1;i--)
{
s=0;
if (x[j]>=c)
j--;
else
{
while (s<c&&j>0)
{
if (s+x[j]>=c)
{
x[j]-=c-s;
s=c;
}
else
{
s+=x[j];
x[j]=0;
j--;
}
}
}
if (!j&&s<c)
return 0;
}
return 1;
}
void cauta(long l,long r)
{
m=(l+r)/2;
if (marmota_este_ucisa(m))
{
t=m;
if (!marmota_este_ucisa(m+1))
return;
else
cauta(m+1,r);
}
else
{
cauta(l,m-1);
}
if (l>=r)
return;
}
int main(){
freopen("grupuri.in","r",stdin);
freopen("grupuri.out","w",stdout);
scanf("%d%d",&k,&n);
for (i=1;i<=n;i++)
scanf("%d",&v[i]);
cauta(1,n);
printf("%d",t);
return 0;
}