Cod sursa(job #1105468)

Utilizator Athena99Anghel Anca Athena99 Data 11 februarie 2014 20:21:28
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>

using namespace std;

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

typedef long long i64;

const int nmax= 100000;

i64 v[nmax+1];

bool check( i64 x, i64 n, i64 k ) {
    i64 s= 0;
    for ( i64 i= n; i>=1; --i ) {
        i64 min= x;
        if ( v[i]<min ) {
            min= v[i];
        }

        s+= min;
    }

    if ( s>=k*x ) {
        return 1;
    } else {
        return 0;
    }
}

int main(  ) {
    i64 n, k, sum= 0, n2, sol= 0;
    fin>>k>>n;
    for ( i64 i= 1; i<=n; ++i ) {
        fin>>v[i];
        sum+= v[i];
    }
    sum/= k;
    
    for ( n2= 1; n2<sum; n2*= 2 ) ;
    for ( i64 step= n2; step>0; step/= 2 ) {
        if ( sol+step<=sum && check( sol+step, n, k ) ) {
            sol+= step;
        }
    }
    fout<<sol<<"\n";

    return 0;
}