Pagini recente » Cod sursa (job #1542149) | Cod sursa (job #78603) | Cod sursa (job #14576) | Cod sursa (job #875603) | Cod sursa (job #1309434)
/// InfoAerena ~~ Grupuri
#include <fstream>
using namespace std;
ifstream in("grupuri.in");
ofstream out("grupuri.out");
typedef long long I64;
const int NMAX = 100000;
const long long INF = 0xFFFFFFFFFFFFF;
I64 v[NMAX+1];
I64 N, K, Sol, Lesum = 0;
bool Good( I64 val ) {
I64 Sum = 0;
for( int i = 1; i <= N && Sum < 1LL*val*K; ++i ) {
if( val < v[i] ) Sum += 1LL*val;
else Sum += 1LL*v[i];
}
return (Sum >= 1LL*val*K);
}
int main() {
in >> K >> N;
for( int i = 1; i <= N; ++i ) {
in >> v[i];
Lesum += v[i];
}
I64 step, i;
for( step = 1; step < Lesum/K+K; step<<= 1 );
for( i = 0; step; step>>= 1 ) {
if( Good(i+step) ) i += 1LL*step;
}
out << i << '\n';
return 0;
}