Pagini recente » Cod sursa (job #67158) | Cod sursa (job #1257690) | Cod sursa (job #633482) | Cod sursa (job #2155326) | Cod sursa (job #75175)
Cod sursa(job #75175)
#include <fstream>
#include <cstdio>
using namespace std;
#define MAX_N 100005
#define FIN "grupuri.in"
#define FOUT "grupuri.out"
int N,K,BEST;
long long S;
int A[MAX_N];
inline int Min (int a, int b) {if (a<b) return a; else return b; };
int check (long long X)
{
int i;
long long vl=0;
for (i=1; i<=N; ++i)
vl+=(long long)Min(A[i],X);
if (vl>=(long long)X*K)
{
if (X>BEST) BEST=X;
return 1;
}
return 0;
}
void Solve (void)
{
long long li,lf,m;
li=1; lf=S/K;
while (li<=lf)
{
m=(li+lf)>>1;
if (check(m)) li=m+1;
else lf=m-1;
}
}
int main ()
{
freopen(FIN,"r",stdin);
freopen(FOUT,"w",stdout);
scanf("%d %d", &K, &N);
for (int i=1; i<=N; ++i) {
scanf("%d",A+i);
S+=(long long)A[i]; }
Solve();
printf("%d",BEST);
return 0;
}