Cod sursa(job #1716934)

Utilizator oldatlantianSerban Cercelescu oldatlantian Data 13 iunie 2016 22:58:44
Problema Grupuri Scor 96
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <bits/stdc++.h>
using namespace std;
typedef long long i64;

const int NMAX = 1000005;
const i64 MMAX = 1LL<<50;

int n, k;
int v[NMAX];

bool check(i64 arg) {
    i64 s = 0;
    for(int i=1; i<=n; ++i)
        s+=min(i64(v[i]), arg);
    if(s>=arg*k)
        return 0;
    else
        return 1;
}

int main(void) {
    freopen("grupuri.in", "r", stdin);
    freopen("grupuri.out", "w", stdout);
    i64 ans;

    scanf("%d%d",&k,&n);
    for(int i=1; i<=n; ++i)
        scanf("%d",&v[i]);

    ans=0;
    for(i64 m=MMAX; m; m>>=1)
        if(!check(ans+m))
            ans+=m;

    printf("%lld\n",ans);

    fclose(stdin);
    fclose(stdout);
    return 0;
}