Cod sursa(job #3222934)

Utilizator PescarusTanislav Luca Andrei Pescarus Data 11 aprilie 2024 21:58:10
Problema Grupuri Scor 98
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
using namespace std;
ifstream f("grupuri.in");
ofstream g("grupuri.out");
const int nmax = 100005;
int a[nmax];
int n, k;
bool merge(int m){
    long long sum = 0;
    for(int i = 1; i <= n; i++){
        sum += min(m, a[i]);
    }
    if(sum >= k * m){
        return true;
    }
    else{
        return false;
    }
}
int main(){
    ios::sync_with_stdio(0);
    f.tie(0);
    f >> k >> n;
    long long sum = 0;
    for(int i = 1; i <= n; i++){
        f >> a[i];
        sum += a[i];
    }
    long long sol = -1;
    long long st = 1, dr = sum / k;
    while(st <= dr){
        long long m = (st + dr) / 2;
        if(merge(m)){
            st = m + 1;
            sol = m;
        }
        else{
            dr = m - 1;
        }
    }
    g << sol << '\n';
}