Problem p02598 (C++) — buggy submission, verdict: Runtime Error

#include <bits/stdc++.h>
#define rep(a, b, c) for (int a = b; a <= c; a++)
#define per(a, b, c) for (int a = b; a >= c; a--)
#define ios                                                                    \\
  ;                                                                            \\
  ios::sync_with_stdio(false);                                                 \\
  cin.tie(0);
#define pb push_back
#define mk make_pair
#define fi first
#define se second
#define mem(a, b) memset(a, b, sizeof(a))
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
#define ls(x) (x << 1)
#define rs(x) (ls(x) | 1)
#define eps 1e-11
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
typedef vector<int> VI;
typedef double db;
mt19937 rnd(random_device{}());
const int mod = 998244353;
const int N = 1e6 + 5;
const int M = 1e6 + 5;
inline ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
inline ll lcm(ll a, ll b) { return a * b / gcd(a, b); }
inline ll ksm(ll x, ll y) {
  ll res = 1;
  while (y) {
    if (y & 1)
      res = res * x % mod;
    x = x * x % mod;
    y >>= 1;
  }
  return res;
}
int n, m, k;
ll a[N];
bool ok(ll x) {
  ll cnt = 0;
  rep(i, 1, n) { cnt += (a[i] + x - 1) / x - 1; }
  return cnt <= k;
}

int main() {
  cin >> n >> k;
  ll r = 0;
  rep(i, 1, n) cin >> a[i], r = max(r, a[i]);
  ll l = 1, ans;
  while (l <= r) {
    ll mid = l + r >> 1;
    if (ok(mid))
      ans = mid, r = mid - 1;
    else
      l = mid + 1;
  }
  printf("%lld\\n", ans);
  return 0;
}
/*
2
1 5 10
2 15 5
3
2 93 78
1 71 59
3 57 96
*/
//
//                            _ooOoo_
//                           o8888888o
//                           88" . "88
//                           (| -_- |)
//                           O\\  =  /O
//                        ____/`---'\\____
//                      .'  \\|     |//  `.
//                     /  \\|||  :  |||//  \\
//                    /  _||||| -:- |||||-  \\
//                    |   | \\  -  /// |   |
//                    | \\_|  ''\\---/''  |   |
//                    \\  .-\\__  `-`  ___/-. /
//                  ___`. .'  /--.--\\  `. . __
//               ."" '<  `.___\\_<|>_/___.'  >'"".
//              | | :  `- \\`.;`\\ _ /`;.`/ - ` : | |
//              \\  \\ `-.   \\_ __\\ /__ _/   .-` /  /
//         ======`-.____`-.___\\_____/___.-`____.-'======
//                            `=---='
//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//                     佛祖保佑      永无BUG


Error: 0

Fixed submission:

#include <bits/stdc++.h>
#define rep(a, b, c) for (int a = b; a <= c; a++)
#define per(a, b, c) for (int a = b; a >= c; a--)
#define ios                                                                    \\
  ;                                                                            \\
  ios::sync_with_stdio(false);                                                 \\
  cin.tie(0);
#define pb push_back
#define mk make_pair
#define fi first
#define se second
#define mem(a, b) memset(a, b, sizeof(a))
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
#define ls(x) (x << 1)
#define rs(x) (ls(x) | 1)
#define eps 1e-11
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
typedef vector<int> VI;
typedef double db;
mt19937 rnd(random_device{}());
const int mod = 998244353;
const int N = 1e6 + 5;
const int M = 1e6 + 5;
inline ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
inline ll lcm(ll a, ll b) { return a * b / gcd(a, b); }
inline ll ksm(ll x, ll y) {
  ll res = 1;
  while (y) {
    if (y & 1)
      res = res * x % mod;
    x = x * x % mod;
    y >>= 1;
  }
  return res;
}
int n, m, k;
ll a[N];
bool ok(ll x) {
  ll cnt = 0;
  rep(i, 1, n) { cnt += (a[i] + x - 1) / x - 1; }
  return cnt <= k;
}

int main() {
  cin >> n >> k;
  ll r = 0;
  rep(i, 1, n) cin >> a[i], r = max(r, a[i]);
  ll l = 0, ans;
  while (l <= r) {
    ll mid = l + r >> 1;
    if (ok(mid))
      ans = mid, r = mid - 1;
    else
      l = mid + 1;
  }
  printf("%lld\\n", ans);
  return 0;
}
/*
2
1 5 10
2 15 5
3
2 93 78
1 71 59
3 57 96
*/
//
//                            _ooOoo_
//                           o8888888o
//                           88" . "88
//                           (| -_- |)
//                           O\\  =  /O
//                        ____/`---'\\____
//                      .'  \\|     |//  `.
//                     /  \\|||  :  |||//  \\
//                    /  _||||| -:- |||||-  \\
//                    |   | \\  -  /// |   |
//                    | \\_|  ''\\---/''  |   |
//                    \\  .-\\__  `-`  ___/-. /
//                  ___`. .'  /--.--\\  `. . __
//               ."" '<  `.___\\_<|>_/___.'  >'"".
//              | | :  `- \\`.;`\\ _ /`;.`/ - ` : | |
//              \\  \\ `-.   \\_ __\\ /__ _/   .-` /  /
//         ======`-.____`-.___\\_____/___.-`____.-'======
//                            `=---='
//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//                     佛祖保佑      永无BUG