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

// bismillahir rahmanir rahim            //Author:Fayed Anik

#include <bits/stdc++.h>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>

using namespace std;
// using namespace __gnu_pbds;

// #define         ordered_set tree<int, null_type,less<int>,
// rb_tree_tag,tree_order_statistics_node_update>
#define ll long long
#define lf double
#define pb(x) push_back(x)
#define ull unsigned long long
#define sfl(a) scanf("%lld", &a)
#define sf(a) scanf("%d", &a)
#define pf(a) printf("%d\\n", a)
#define pfl(a) printf("%lld\\n", a)
#define FOR(x, n) for (ll x = 1; x <= n; ++x)
#define pii pair<ll, ll>
#define mp(a, b) make_pair(a, b)
#define UNIQUE(v) v.resize(distance(v.begin(), unique(v.begin(), v.end())))
#define mod 1000000007
#define INF 2e18
#define EPS 1e-15
#define f1 first
#define f2 second
#define all(v) v.begin(), v.end()
#define PI acos(-1)
#define printminusone printf("-1\\n")
#define bug printf("bug")
#define FILEIN freopen("in.txt", "r", stdin)
#define FILEOUT freopen("out.txt", "w", stdout)

// ll SET(ll mask,ll pos){ return mask = (mask | (1ll<<pos)); }
// ll RESET(ll mask,ll pos){ return mask = mask & ~(1ll<<pos); }
// bool CHECK(ll mask,ll pos) { return (bool) (mask & (1ll<<pos)); }
// priority_queue <ll, vector<ll>, greater<ll> > pq;
// int dx[]={0,0,1,-1,1,1,-1,-1};
// int dy[]={1,-1,0,0,1,-1,1,-1};

#define lim 200000 + 5

ll a[lim];
int main() {
  // freopen("input.txt","r",stdin);
  // freopen("output.txt","w",stdout);
  ll n, k, mx = 0;
  sfl(n), sfl(k);
  FOR(i, n) {
    sfl(a[i]);
    mx = max(mx, a[i]);
  }
  ll lw = 1, hi = 1e10, mid, ans = mx, tot = 0;
  while (lw <= hi) {
    mid = (lw + hi) / 2;
    tot = 0;
    for (ll i = 1; i <= n; i++) {
      if (a[i] > mid)
        tot += a[i] / mid;
    }
    if (tot <= k) {
      ans = mid;
      hi = mid - 1;
    } else {
      lw = mid + 1;
    }
  }
  pfl(ans);
  return 0;
}

Error: 0

Fixed submission:

// bismillahir rahmanir rahim            //Author:Fayed Anik

#include <bits/stdc++.h>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>

using namespace std;
// using namespace __gnu_pbds;

// #define         ordered_set tree<int, null_type,less<int>,
// rb_tree_tag,tree_order_statistics_node_update>
#define ll long long
#define lf double
#define pb(x) push_back(x)
#define ull unsigned long long
#define sfl(a) scanf("%lld", &a)
#define sf(a) scanf("%d", &a)
#define pf(a) printf("%d\\n", a)
#define pfl(a) printf("%lld\\n", a)
#define FOR(x, n) for (ll x = 1; x <= n; ++x)
#define pii pair<ll, ll>
#define mp(a, b) make_pair(a, b)
#define UNIQUE(v) v.resize(distance(v.begin(), unique(v.begin(), v.end())))
#define mod 1000000007
#define INF 2e18
#define EPS 1e-15
#define f1 first
#define f2 second
#define all(v) v.begin(), v.end()
#define PI acos(-1)
#define printminusone printf("-1\\n")
#define bug printf("bug")
#define FILEIN freopen("in.txt", "r", stdin)
#define FILEOUT freopen("out.txt", "w", stdout)

// ll SET(ll mask,ll pos){ return mask = (mask | (1ll<<pos)); }
// ll RESET(ll mask,ll pos){ return mask = mask & ~(1ll<<pos); }
// bool CHECK(ll mask,ll pos) { return (bool) (mask & (1ll<<pos)); }
// priority_queue <ll, vector<ll>, greater<ll> > pq;
// int dx[]={0,0,1,-1,1,1,-1,-1};
// int dy[]={1,-1,0,0,1,-1,1,-1};

#define lim 200000 + 5

ll a[lim];
int main() {
  // freopen("input.txt","r",stdin);
  // freopen("output.txt","w",stdout);
  ll n, k, mx = 0;
  sfl(n), sfl(k);
  FOR(i, n) {
    sfl(a[i]);
    mx = max(mx, a[i]);
  }
  ll lw = 0, hi = mx, mid, ans = mx, tot = 0;
  while (lw <= hi) {
    mid = (lw + hi) / 2;
    tot = 0;
    for (ll i = 1; i <= n; i++) {
      ll t = a[i] / mid;
      tot += t;
    }
    if (tot <= k) {
      ans = mid;
      hi = mid - 1;
    } else {
      lw = mid + 1;
    }
  }
  pfl(ans);
  return 0;
}