Cod sursa(job #1206315)

Utilizator tudorv96Tudor Varan tudorv96 Data 9 iulie 2014 16:16:30
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
using namespace std;

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

const int N = 1e5 + 5;

long long v[N], sum, n, k, sol = 0;

bool go(long long nr) {
    long long ras = 0;
    for (int i = 0; i < n; ++i) {
        ras += min(nr, v[i]);
        if (ras >= nr * k)
            return 1;
    }
    return 0;
}

int main() {
    fin >> k >> n;
    for (int i = 0; i < n; ++i) {
        fin >> v[i];
        sum += v[i];
    }
    int step = 1;
    for(; step <= sum / k; step <<= 1LL);
    for (; step; step >>= 1LL)
        if (sol + step <= sum / k && go(sol + step))
            sol += step;
    fout << sol;
}