Cod sursa(job #1251885)

Utilizator smaraldaSmaranda Dinu smaralda Data 29 octombrie 2014 23:12:12
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<stdio.h>

#define LL long long

const int NMAX = 100005, VMAX = 1e9;

int k, n, a[NMAX];

bool ok (int gr) {
    int i;
    LL s;

    s = 0;
    for(i = 1; i <= n; ++ i) {
        if(a[i] > gr)
            s += (LL)gr;
        else
            s += (LL)a[i];

        if(s >= (LL)gr * k)
            return 1;
    }

    return 0;
}

int bs (int left, int right) {
    int mid, last;

    while(left <= right) {
        mid = (left + right) / 2;
        if(ok(mid))
            last = mid,
            left = mid + 1;
        else
            right = mid - 1;
    }
    return last;
}

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

    scanf("%d%d", &k, &n);
    for(i = 1; i <= n; ++ i)
        scanf("%d", &a[i]);

    printf("%d\n", bs(0, VMAX));
    return 0;
}