Cod sursa(job #587413)

Utilizator perticas_catalinperticas catalin perticas_catalin Data 4 mai 2011 20:08:24
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <iostream>
#include <cstring>

using namespace std;

#define NM 100005
#define LL long long

int A[NM], K, N;

int check (LL x)
{
    LL tot = 0;

    for (int i = 1; i <= N; ++i) tot += min(x, (LL)A[i]);

    if (tot/x >= K) return 1;
    return 0;
}

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", &A[i]);

    LL st = 0, dr = 100000000000LL;

    while (st < dr - 1)
    {
        LL mij = (st + dr)/2;

        if (check(mij)) st = mij;
        else dr = mij - 1;
    }

    if (check(dr)) printf ("%lld", dr);
    else printf ("%lld", st);

    return 0;
}