Cod sursa(job #2909508)

Utilizator vlad2009Vlad Tutunaru vlad2009 Data 14 iunie 2022 01:17:21
Problema Grupuri Scor 98
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#define int long long

using namespace std;

const int MAX_N = 1e5;
int a[MAX_N + 1];
int k, n;

bool check(int guess) {
    int sum = 0;
    for (int i = 1; i <= n; i++) {
        sum += min(a[i], guess);
    }
    return sum >= guess * k;
}

int cb() {
    int st = 0, dr = (1LL << 50), sol = 0;
    while (st <= dr) {
        int mijl = (st + dr) / 2;
        if (check(mijl)) {
            sol = mijl;
            st = mijl + 1;
        } else {
            dr = mijl - 1;
        }
    }
    return sol;
}

signed main() {
    ifstream fin("grupuri.in");
    ofstream fout("grupuri.out");
    fin >> k >> n;
    for (int i = 1; i <= n; i++) {
        fin >> a[i];
    }
    long long answer = cb();
    fout << answer;
    return 0;
}