Cod sursa(job #2291259)

Utilizator mihailescu_eduardMihailescu Eduard-Florin mihailescu_eduard Data 27 noiembrie 2018 20:13:07
Problema Grupuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>
#include <algorithm>
using namespace std;
 
#define lli long long int

FILE *fin = freopen("grupuri.in", "r",stdin);
FILE *fout = freopen("grupuri.out","w",stdout);
 
static const int NMAX = 1e5+5;
 
lli n,k;
lli v[NMAX];
lli sumTotal;
lli logN, pas;

bool Check(lli m)
{
    lli s = 0;
    for(lli i = 1; i <= n; ++i)
        s+= min(m,v[i]);
    if(s >= m * k)
        return true;
    return false;
}

int main()
{
    scanf("%lld%lld",&k,&n);
    for(int i= 1; i<= n; ++i)
    {
        scanf("%lld",&v[i]);
        sumTotal+=v[i];
    }
    for(logN = 1; logN <= sumTotal/k+1; logN<<=1);
 
    for(;logN; logN >>=1)
    {
        if((pas + logN)*k <= sumTotal && Check((pas+logN)))
            pas+=logN;
    }
 
    printf("%lld", pas);
    return 0;
}