Cod sursa(job #2911095)

Utilizator divadddDavid Curca divaddd Data 26 iunie 2022 19:39:39
Problema Grupuri Scor 100
Compilator cpp-64 Status done
Runda 3_iulie Marime 0.85 kb
#include <iostream>
#include <fstream>
#define MAX 100002
#define int long long
using namespace std;
int n,k,v[MAX];

ifstream fin("grupuri.in");
ofstream fout("grupuri.out");

bool sePoate(int g){
    long long total = 0;
    for(int i = 1; i <= n; i++){
        total += 1LL*min(g, v[i]);
    }
    if(total >= g*k*1LL){
        return 1;
    }
    return 0;
}

signed main() /// ca trebuie sa dea return la int
{
    fin >> k >> n;
    for(int i = 1; i <= n; i++){
        fin >> v[i];
    }
    /// 1 1 1 1 1 0 0 0 0 0
    ///         ^
    /// filtru = sePoate(poz)
    int ans = 0;
    int st = 0, dr = (1LL<<40);
    while(st <= dr){
        int mid = (st+dr)/2;
        if(sePoate(mid)){
            ans = mid;
            st = mid+1;
        }else{
            dr = mid-1;
        }
    }
    fout << ans;
    return 0;
}