Pagini recente » Cod sursa (job #1800749) | Cod sursa (job #1951864) | Cod sursa (job #1349464) | Cod sursa (job #216166) | Cod sursa (job #1240319)
#include <fstream>
#include <cmath>
using namespace std ;
const int NMAX = 1000005;
const int INF = 0x3f3f3f3f ;
ifstream cin("grupuri.in") ;
ofstream cout("grupuri.out") ;
int N, K, A[NMAX] ;
long long suma = 0;
inline bool Verifica(long long X)
{
long long s = 0 ;
for(int i = 1 ; i <= N ; ++ i)
if(A[i] < X)
s = s+ A[i] ;
else s = s + X ;
if( K * X <= s)
return true ;
else return false ;
}
inline int CB_Grup()
{
long long st = 1 ;
long long dr = suma / K;
long long mijloc;
long long solutie = 0 ;
while (st <= dr)
{
mijloc = (st + dr) / 2 ;
if(Verifica(mijloc))
{
solutie = mijloc ;
st = mijloc + 1 ;
}
else dr = mijloc - 1 ;
}
cout << solutie << '\n' ;
}
int main()
{
cin >> K >> N ;
for(int i = 1 ; i <= N ; ++ i)
cin >> A[i], suma = suma + A[i];
CB_Grup() ;
cin.close() ;
cout.close() ;
return 0 ;
}