Pagini recente » Cod sursa (job #739937) | Cod sursa (job #2549252) | Cod sursa (job #937191) | Cod sursa (job #1042832) | Cod sursa (job #290993)
Cod sursa(job #290993)
#include<stdio.h>
long n,i,a[100005],c,k;
long long ult,s,dr,st,r,m;
int main()
{
freopen("grupuri.in","r",stdin);
freopen("grupuri.out","w",stdout);
scanf("%ld%ld",&k,&n);
for(i=1;i<=n;++i)
{scanf("%ld",&a[i]);
s+=a[i];}
dr=s/k;
st=1;
while(st<=dr)
{m=(st+dr)/2;
r=0;
c=1;
for(i=1;i<=n;++i)
{if(a[i]>=m)c++;
else{r+=a[i];if(r>=m)r=r-m+1,++c;}
if(c>k)break;}
if(c>k){ult=m;st=m+1;}
else dr=m-1;}
printf("%lld\n",ult);
return 0;
}