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


#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define sz(a) a.size()
#define all(a) a.begin(), a.end()
#define lb lower_bound
#define ub upper_bound
#define owo                                                                    \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);
#define MOD (ll)(1e8)
#define INF (ll)(1e18)
#define debug(...) fprintf(stderr, __VA_ARGS__), fflush(stderr)
#define time__(d)                                                              \\
  for (long blockTime = 0;                                                     \\
       (blockTime == 0 ? (blockTime = clock()) != 0 : false);                  \\
       debug("%s time : %.4fs\\n", d,                                           \\
             (double)(clock() - blockTime) / CLOCKS_PER_SEC))
typedef long long int ll;
typedef long double ld;
typedef pair<ll, ll> PII;
typedef pair<int, int> pii;
typedef vector<vector<int>> vii;
typedef vector<vector<ll>> VII;
ll gcd(ll a, ll b) {
  if (!b)
    return a;
  else
    return gcd(b, a % b);
}
const int MAXN = 1e6 + 5;
int main() {
  ll n;
  ll k;
  cin >> n >> k;
  vector<ll> a(n + 1);
  for (int i = 0; i < n; i++)
    cin >> a[i];
  auto get = [&](ld x) {
    int cnt = 0;
    for (int i = 0; i < n; i++)
      cnt += ceil(a[i] / x) - 1;
    return cnt;
  };
  ll l = 0, r = 1e9;
  while (r - l > 1) {
    auto mid = (l + r) / 2;
    if (get(mid) <= k)
      r = mid;
    else
      l = mid;
  }
  cout << r;
}


Error: WA

Fixed submission:


#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define sz(a) a.size()
#define all(a) a.begin(), a.end()
#define lb lower_bound
#define ub upper_bound
#define owo                                                                    \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);
#define MOD (ll)(1e8)
#define INF (ll)(1e18)
#define debug(...) fprintf(stderr, __VA_ARGS__), fflush(stderr)
#define time__(d)                                                              \\
  for (long blockTime = 0;                                                     \\
       (blockTime == 0 ? (blockTime = clock()) != 0 : false);                  \\
       debug("%s time : %.4fs\\n", d,                                           \\
             (double)(clock() - blockTime) / CLOCKS_PER_SEC))
typedef long long int ll;
typedef long double ld;
typedef pair<ll, ll> PII;
typedef pair<int, int> pii;
typedef vector<vector<int>> vii;
typedef vector<vector<ll>> VII;
ll gcd(ll a, ll b) {
  if (!b)
    return a;
  else
    return gcd(b, a % b);
}
const int MAXN = 1e6 + 5;
int main() {
  ll n, k;
  cin >> n >> k;
  vector<ll> a(n + 1);
  for (int i = 0; i < n; i++)
    cin >> a[i];
  ll l = 0, r = 1e9;
  while (l < r) {
    // cout<<l<<" "<<r<<'\\n';
    ll mid = (l + r) / 2;
    ll sum = 0;
    for (int i = 0; i < n; i++) {
      sum += ((a[i]) / mid);
    }
    if (sum <= k)
      r = mid - 1;
    else
      l = mid + 1;
  }
  cout << l;
}