Cod sursa(job #1309417)

Utilizator felixiPuscasu Felix felixi Data 5 ianuarie 2015 18:55:28
Problema Grupuri Scor 66
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
///   InfoAerena ~~ Grupuri

#include <fstream>

using namespace std;

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

typedef long long I64;

const int NMAX = 100000;
const int INF  = 1000000;

I64 v[NMAX+1];
I64 N, K, Sol;

bool Good( I64 val ) {
    I64 Sum = 0;
    for( int i = 1;  i <= N && Sum < val*K;  ++i ) {
        if( val < v[i] ) Sum += val;
        else Sum += v[i];
    }
    return (Sum >= val*K);
}

int main() {
    in >> K >> N;
    for( int i = 1;  i <= N;  ++i )  in >> v[i];
    I64 step, i;
    for( step = 1;  step*2 < INF;  step<<= 1 );
    for( i = 0;  step;  step>>= 1 ) {
        if( Good(i+step) ) i += step;
    }
    Sol = i;
    out << Sol << '\n';
    return 0;
}