Cod sursa(job #3147061)

Utilizator Traian_7109Traian Mihai Danciu Traian_7109 Data 23 august 2023 22:24:10
Problema Grupuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long 
#define ld long double
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pb push_back
#define eb emplace_back
#define int ll 

using namespace std;

int n, k;
vector<int> a;

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

signed main() {
    #ifndef TEST 
        freopen("grupuri.in", "r", stdin);
        freopen("grupuri.out", "w", stdout);
    #endif
    ios_base :: sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
    
    cin >> k >> n;
    a.resize(n + 1);
    int sum = 0;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        sum += a[i];
    }
    int ans = 0, left = 1, right = sum;
    while (left <= right) {
        int middle = (left + right) / 2;
        if (verify(middle)) {
            ans = middle;
            left = middle + 1;
        }
        else
            right = middle - 1;
    }
    cout << ans;
    return 0;
}