Cod sursa(job #998134)

Utilizator poptibiPop Tiberiu poptibi Data 15 septembrie 2013 21:01:45
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;

const int NMAX = 100010;

int K, N, V[NMAX];
long long S;

bool Check(long long Groups)
{
    long long CrtSum = 0;
    for(int i = 1; i <= N; ++ i)
        CrtSum += min(1LL * V[i], Groups);

    return CrtSum >= Groups * K;
}

int main()
{
    freopen("grupuri.in", "r", stdin);
    freopen("grupuri.out", "w", stdout);

    scanf("%i %i", &K, &N);
    for(int i = 1; i <= N; ++ i)
    {
        scanf("%i", &V[i]);
        S += 1LL * V[i];
    }

    long long Left = 1, Right = S / K, Mid, Ans;
    while(Left <= Right)
    {
        Mid = (Left + Right) / 2;
        if(Check(Mid)) Ans = Mid, Left = Mid + 1;
        else Right = Mid - 1;
    }

    printf("%lld\n", Ans);

    return 0;
}