Pagini recente » Cod sursa (job #3178263) | Cod sursa (job #1342874) | Cod sursa (job #624937) | Cod sursa (job #1731174) | Cod sursa (job #1146265)
#include <fstream>
using namespace std;
ifstream is("grupuri.in");
ofstream os("grupuri.out");
int K, N, x[100001];
int maxim(-9999999);
int Sum;
bool Try(int cnt);
int BS();
int main()
{
is >> K >> N;
for ( int i = 1; i <= N; ++i )
is >> x[i], Sum += x[i];
os << BS();
is.close();
os.close();
return 0;
}
bool Try(int cnt)
{
int S = 0;
for ( int i = 1; i <= N; ++i )
{
if ( x[i] > cnt )
S += cnt;
else
S += x[i];
if ( S >= cnt * K )
return true;
}
return false;
}
int BS()
{
int i,step;
for ( step = 1; step <= Sum/K; step <<= 1 );
for ( i = 0; step; step >>= 1 )
{
if ( i + step <= Sum/K && Try(i + step) == true )
i += step;
}
return i;
}