Cod sursa(job #1111119)

Utilizator PatrikStepan Patrik Patrik Data 18 februarie 2014 17:23:23
Problema Grupuri Scor 98
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
    #include<cstdio>
    #include<iostream>
    using namespace std;
    #define MAX 100000
    #define LL long long
    LL s , best;
    int N , K  , v[MAX] ;

    bool verif(LL x);

    int main()
    {
        freopen("grupuri.in" , "r" , stdin );
        freopen("grupuri.out" , "w" , stdout );
        scanf("%d%d" , &K , &N );
        for(int i = 1 ; i <= N; ++i )
        {
            scanf("%d" , &v[i]);
            s+=v[i];
        }
        LL st = 0, dr = s/K;
        while(st <= dr)
        {
            LL m = (st+dr)/2;
            if(verif(m))
            {
                best = m;
                st = m+1;
            }
            else
                dr = m-1;
        }
        cout<<best;
        return 0;
    }

    bool verif(LL x)
    {
        long long si = 0;
        for(int i = 1 ; i <= N ; ++i )
            if(v[i] < x)
            si+=v[i];
        else
            si+=x;
        if(si >= 1ll*x*K)
            return 1;
        return 0;
    }