Cod sursa(job #2765074)

Utilizator DragosC1Dragos DragosC1 Data 24 iulie 2021 20:29:08
Problema Grupuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
using namespace std;

int k, n;
int a[100001];
long long S = 0;

void read() {
    int i;
    ifstream f("grupuri.in");
    f >> k >> n;
    for (i = 1; i <= n; i++)
        f >> a[i];
    f.close();
}

bool ok(long long x) {
    int i;
    long long aux = 0;
    for (i = 1; i <= n; i++)
        aux += min(1LL * a[i], x);
    if (aux >= x * k)
        return 1;
    return 0;
}

long long rez;

void solve() {
    int i;
    long long st, dr, mij;

    for (i = 1; i <= n; i++)
        S += a[i];

    st = 1, dr = S / k;
    while (st <= dr) {
        mij = (st + dr) / 2;
        if (ok(mij))
            st = mij + 1;
        else dr = mij - 1;
    }
    rez = dr;
}   

void output() {
    ofstream g("grupuri.out");
    g << rez;
    g.close();
}

int main() {
    read();
    solve();
    output();
    return 0;
}