Pagini recente » Istoria paginii runda/srymwgerhd | Istoria paginii runda/simulare-cartita-41 | Cod sursa (job #2443963) | Cod sursa (job #1393679) | Cod sursa (job #2149299)
#include<fstream>
using namespace std;
ifstream fin("grupuri.in");
ofstream fout("grupuri.out");
int C[100005], K, N;
long long Sum, Sol;
inline int check( long long X ){
long long S = 0;
for( int i = 1; i <= N; i++ )
S += ( ( C[i] <= X ) ? C[i] : X );
if( S >= 1LL * X * K )
return 1;
return 0;
}
int main(){
fin >> K >> N;
for( int i = 1; i <= N; i++ )
fin >> C[i], Sum += C[i];
Sum /= K;
for( long long step = (1LL<<40); step != 0; step >>= 1 )
if( Sol + step <= Sum && check( Sol + step ) == 1 )
Sol += step;
fout << Sol << "\n";
return 0;
}