Pagini recente » Cod sursa (job #45978) | Cod sursa (job #2505033) | Cod sursa (job #1055316) | Cod sursa (job #3194158) | Cod sursa (job #345529)
Cod sursa(job #345529)
#include <stdio.h>
#define Nmax 100005
#define ll long
ll n,k,i;
ll a[Nmax];//,p[Nmax];
ll s;
ll merge( ll x){
ll i,j=1,ok,y,s=0;
for(i=1;i<=n;++i) s+= x > a[i] ? x : a[i];
/* ok=1;
for(i=1;i<=k && ok;i++){
y=x;
while( y>0 && j<=n ){
if(p[j] > y) p[j]-=y,y=0;
else y-=p[j],j++;
}
if(y>0) ok=0;
}
return ok; */
return s >= x*k;
}
ll caut_bin(ll l, ll r){
ll m,rez=0;
while(l<=r){
m=l+(r-l)/2;
if( merge(m) ){
rez=m;
l=m+1;
}
else r=m-1;
}
return rez;
}
int main(){
freopen("grupuri.in","r",stdin);
freopen("grupuri.out","w",stdout);
scanf("%lld%lld",&k,&n);
for(i=1;i<=n;++i) scanf("%lld",&a[i]), s+=a[i];
printf("%lld\n",caut_bin(0,(ll) s/k));
fclose(stdin); fclose(stdout);
return 0;
}