Cod sursa(job #1501922)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 13 octombrie 2015 22:58:47
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
#include <algorithm>

#define DIM 100010
using namespace std;

int K, N, Vector[DIM];
long long sum;

bool verif (int cGroups)
{
    long long value = 0;

    for (int i = 1; i <= N; i ++)
        value += min(Vector[i], cGroups);

    if (value >= cGroups * 1LL * K)
        return 1;
    else
        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", &Vector[i]);
        sum += Vector[i];
    }

    sum /= K;

    int st = 0, dr = sum, mid;
    while (st <= dr)
    {
        mid = st + ((dr - st) >> 1);

        if (verif (mid))
            st = mid + 1;
        else
            dr = mid - 1;
    }

    printf ("%d\n", dr);

    fclose (stdin );
    fclose (stdout);

    return 0;
}