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