Cod sursa(job #1502487)

Utilizator dnprxDan Pracsiu dnprx Data 14 octombrie 2015 18:44:05
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>
#define nmax 100005

using namespace std;

int k, n, a[nmax];
long long sum;

bool Verif(int M)
{
    int i;
    long long S = 0;
    for (i = 1; i <= n; i ++)
        S += min(a[i], M);
    if (S >= M * 1LL * k)
        return true;
    return false;
}

int CautBin(int st, int dr)
{
    int mij, sol;
    sol = -1;
    while (st <= dr)
    {
        mij = st + (dr - st) / 2;
        if (Verif (mij))
        {
            sol = mij;
            st = mij + 1;
        }
        else
        dr = mij - 1;
    }
    return sol;
}

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

    scanf ("%d %d", &k, &n);
    for (i = 1; i <= n; i ++)
    {
        scanf ("%d", a + i);
        sum += a[i];
    }
    sum /= k;
    x = CautBin(0, sum);
    printf ("%d\n", x);
    return 0;
}