Cod sursa(job #2051725)

Utilizator MoodyFaresFares Mohamad MoodyFares Data 29 octombrie 2017 14:34:34
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>
#include <algorithm>

const int MAX_N = 100000;

int K, N;
int a[MAX_N];


bool sePoate(int x) {
  long long s = 0;
  for (int i = N - 1; i >= 0; i--) {
    s += 1LL * std::min(x, a[i]);
  }
  return s >= 1LL * x * K;
}

int main() {
  freopen("grupuri.in", "r", stdin);
  freopen("grupuri.out", "w", stdout);
  
  scanf("%d%d", &K, &N);
  long long s = 0;
  for (int i = 0; i < N; i++) {
    scanf("%d", &a[i]);
    s += 1LL * a[i];
  }
  int st, dr;
  st = 1;
  dr = (int)(1LL * s / K);
  int ans = 0;
  while (st <= dr) {
    int med = (st + dr) / 2;
    if (sePoate(med)) {
      st = med + 1;
      ans = med;
    } else {
      dr = med - 1;
    }
  }
  printf("%d\n", ans);
  return 0;
}