Cod sursa(job #1433836)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 10 mai 2015 00:19:41
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int NMax = 100005;

long long int v[NMax],n,k;

bool solve(long long int mid){
    long long int a = 0;
    for(int i = 1; i <= n; i++){
        a += min(mid,v[i]);
    }
    if(a >= mid * k){
        return true;
    }
    return false;
}

int main()
{
    long long int sum = 0;
    fin >> k >> n;
    for(int i = 1; i <= n; i++){
        fin >> v[i];
        sum += v[i];
    }
    long long int lo,hi,ans = 0;
    lo = 1;
    hi = sum / k;
    while(lo <= hi){
        long long int mid = (lo + hi) / 2;
        if(solve(mid)){
            ans = mid;
            lo = mid + 1;
        } else {
            hi = mid - 1;
        }
    }
    fout << ans;
    return 0;
}