Cod sursa(job #1716935)

Utilizator oldatlantianSerban Cercelescu oldatlantian Data 13 iunie 2016 23:03:49
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>
using namespace std;
typedef long long i64;

const int NMAX = 100005;
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/i64(k)>=arg)
        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;
}