Cod sursa(job #1240317)

Utilizator gerd13David Gergely gerd13 Data 11 octombrie 2014 00:25:54
Problema Grupuri Scor 36
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 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;
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 ;
}