Cod sursa(job #2291258)

Utilizator mihailescu_eduardMihailescu Eduard-Florin mihailescu_eduard Data 27 noiembrie 2018 20:10:57
Problema Grupuri Scor 98
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 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;
 
int n,k;
int v[NMAX];
long long int sumTotal;
long long int logN, pas;

bool Check(int 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("%d%d",&k,&n);
    for(int i= 1; i<= n; ++i)
    {
        scanf("%d",&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;
}