Cod sursa(job #1225612)

Utilizator SerejaSereja Sereja Data 3 septembrie 2014 01:59:38
Problema Grupuri Scor 62
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 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;
    int sum = 0;
    for(int i = 1;i <= j && sum < k*val; ++i) 
        sum += a[i];
    if(sum >= 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;
}