Cod sursa(job #1225614)

Utilizator SerejaSereja Sereja Data 3 septembrie 2014 02:06:19
Problema Grupuri Scor 64
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>

using namespace std;
int k, n,a[100004];
inline bool Check(const int val,int k){
    int j;
    for(j = n;k > 0 && j >= 1 && a[j] >= val; --j,--k);
    if(k==0)
        return 1;
    long long  sum = 0;
    for(; j >= 1; --j) 
        sum += a[j];
    if(sum >= 1LL*k*val)
        return 1;
    return 0;
}
int main(){
    ifstream f("grupuri.in");
    ofstream g("grupuri.out");
    f >> k >> n;
    for(int i = 1;i <= n; ++i)
        f >> a[i];
    f.close();
    int Left = a[1];
    int Right = a[n];
    int sol = -1;
    while(Left <= Right){
        int mid = (Left + Right)/2;
        if(Check(mid,k)){
            sol = mid;
            Left = mid + 1;
        }
        else
            Right = mid-1;
    }
    g<<sol<<"\n";
    g.close();
    return 0;
}