Pagini recente » Cod sursa (job #2704151) | Cod sursa (job #1814227) | Cod sursa (job #2287910) | Cod sursa (job #3264767) | Cod sursa (job #470492)
Cod sursa(job #470492)
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
void open(){
freopen("grupuri.in","r",stdin);
freopen("grupuri.out","w",stdout);
}
#define REP(i,n) for (int i=0;i<(n);i++)
#define N 100010
typedef long long ll;
int k,n,x[N];
ll sum;
void input(){
scanf("%d%d",&k,&n);
REP(i,n){
scanf("%d",&x[i]);
sum+=(ll)x[i];
}
}
bool ok(int a){
ll p=(ll)a*k;
REP(i,n){
if (x[i]<a){
p-=(ll)x[i];
}
else p-=(ll)a;
if (p<=0) return 1;
}
return 0;
}
void solve(){
int lo,hi,mid,ans;
lo=0;hi=(int)(sum/(ll)k);
while (1){
mid=(lo+hi)>>1;
if (ok(mid)){
ans=mid;
lo=mid+1;
}
else hi=mid-1;
if (lo>hi) break;
}
printf("%d\n",ans);
}
int main(){
open();
input();
solve();
//system("pause");
return 0;
}