Pagini recente » Cod sursa (job #3185575) | Cod sursa (job #68389) | Cod sursa (job #2352532) | Cod sursa (job #610822) | Cod sursa (job #1146270)
#include <fstream>
using namespace std;
ifstream is("grupuri.in");
ofstream os("grupuri.out");
#define ll long long
ll K, N, x[100001];
ll 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)
{
ll 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;
}