Pagini recente » Cod sursa (job #1088788) | Cod sursa (job #1611431) | Cod sursa (job #542452) | Cod sursa (job #1991097) | Cod sursa (job #1322764)
#include <cstdio>
#define min(a,b) a > b ? b : a
#define MaxN 100013
using namespace std;
FILE *fin = freopen("grupuri.in","r",stdin);
FILE *fout = freopen("grupuri.out","w",stdout);
int n, k, nr;
int A[MaxN];
void Read()
{
scanf("%d%d", &k, &n);
for(int i = 1; i <= n ; ++i)
{
scanf("%d", &A[i]);
nr += A[i];
}
}
inline bool Check(int m)
{
long long int s = 0;
for(int i = 1; i <= n ; ++i)
s += min( A[i], m );
if( s >= m * k )
return 1;
return 0;
}
void Solve()
{
int left = 0, right = nr / k + 1, m, sol = -1;
while( left <= right )
{
m = (left + right) >> 1;
if( Check(m) )
{
if(sol < m)
sol = m;
left = m + 1;
}
else
right = m - 1;
}
printf("%d", sol);
}
int main()
{
Read();
Solve();
return 0;
}