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

#include <bits/stdc++.h>

using namespace std;

#define REP(i, n) for (int i = 0; i < (n); i++)
#define REPS(i, n) for (int i = 1; i <= (n); i++)
#define RREP(i, n) for (int i = (n)-1; i >= 0; i--)
#define RREPS(i, n) for (int i = (n); i > 0; i--)
#define ALL(v) v.begin(), v.end()
#define RALL(v) v.rbegin(), v.rend()
#define UNIQUE(v) v.erase(unique(v.begin(), v.end()), v.end())
#define mp make_pair
#define mt make_tuple
#define pb push_back

using ll = long long;
using pi = pair<int, int>;
using pl = pair<ll, ll>;
using vi = vector<int>;
using vl = vector<ll>;
using vs = vector<string>;
using vb = vector<bool>;
using vvi = vector<vi>;
using vvl = vector<vl>;

const int MOD = 1e9 + 7;
const int INF = 1e9 + 7;
const ll INFL = 1e18;
const double PI = 3.141592653589793;
const double EPS = 1e-9;

template <class T> bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T> bool chmin(T &a, const T &b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}

signed main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cout << fixed << setprecision(20);

  int H, W, M;
  cin >> H >> W >> M;
  vector<pi> p(M);
  vi ch(H, 0), cw(W, 0);
  REP(i, M) {
    int h, w;
    cin >> h >> w;
    h--;
    w--;
    p[i] = mp(h, w);
    ch[h]++;
    cw[w]++;
  }

  sort(ALL(p));

  int ans = 0;
  int j = 0;
  REP(i, H) if (ch[j] < ch[i]) j = i;
  REP(i, W) {
    int tmp;
    if (binary_search(ALL(p), mp(j, i)))
      tmp = ch[j] + cw[i] - 1;
    else
      tmp = ch[j] + cw[i];
    chmax(ans, tmp);
  }

  j = 0;
  REP(i, W) if (cw[j] < cw[i]) j = i;
  REP(i, H) {
    int tmp;
    if (binary_search(ALL(p), mp(i, j)))
      tmp = ch[i] + cw[j] - 1;
    else
      tmp = ch[i] + cw[j];
    chmax(ans, tmp);
  }

  cout << ans << endl;
}

Error: 0

Fixed submission:

#include <bits/stdc++.h>

using namespace std;

#define REP(i, n) for (int i = 0; i < (n); i++)
#define REPS(i, n) for (int i = 1; i <= (n); i++)
#define RREP(i, n) for (int i = (n)-1; i >= 0; i--)
#define RREPS(i, n) for (int i = (n); i > 0; i--)
#define ALL(v) v.begin(), v.end()
#define RALL(v) v.rbegin(), v.rend()
#define UNIQUE(v) v.erase(unique(v.begin(), v.end()), v.end())
#define mp make_pair
#define mt make_tuple
#define pb push_back

using ll = long long;
using pi = pair<int, int>;
using pl = pair<ll, ll>;
using vi = vector<int>;
using vl = vector<ll>;
using vs = vector<string>;
using vb = vector<bool>;
using vvi = vector<vi>;
using vvl = vector<vl>;

const int MOD = 1e9 + 7;
const int INF = 1e9 + 7;
const ll INFL = 1e18;
const double PI = 3.141592653589793;
const double EPS = 1e-9;

template <class T> bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T> bool chmin(T &a, const T &b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}

signed main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cout << fixed << setprecision(20);

  ll H, W, M;
  cin >> H >> W >> M;
  vl h(H + 1, 0), w(W + 1, 0);
  vector<pl> p(M);
  REP(i, M) {
    cin >> p[i].first >> p[i].second;
    h[p[i].first]++;
    w[p[i].second]++;
  }

  sort(ALL(p));

  ll ans = 0;
  ll idx = 0;

  for (ll i = 0; i < (ll)h.size(); i++)
    if (chmax(h[idx], h[i]))
      idx = i;

  for (ll i = 0; i < (ll)w.size(); i++) {
    ll tmp = h[idx];
    if (binary_search(ALL(p), mp(idx, i)))
      tmp--;
    tmp += w[i];
    chmax(ans, tmp);
  }

  for (ll i = 0; i < (ll)w.size(); i++)
    if (chmax(w[idx], w[i]))
      idx = i;

  for (ll i = 0; i < (ll)h.size(); i++) {
    ll tmp = w[idx];
    if (binary_search(ALL(p), mp(i, idx)))
      tmp--;
    tmp += h[i];
    chmax(ans, tmp);
  }

  cout << ans << endl;
}