Cod sursa(job #1240319)

Utilizator gerd13David Gergely gerd13 Data 11 octombrie 2014 00:29:08
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#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 ;
}