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

#include <bits/stdc++.h>
using namespace std;

#define Darr(x)                                                                \\
  cerr << #x << " = ";                                                         \\
  for (auto i : x)                                                             \\
    cerr << i << " ";                                                          \\
  cerr << "\\n";
#define ar array
#define pr pair
#define vt vector
#define pb push_back
#define all(c) (c).begin(), (c).end()
#define sz(x) (int)(x).size()

#define F_OR(i, a, b, s)                                                       \\
  for (int i = (a); (s) > 0 ? i < (b) : i > (b); i += (s))
#define F_OR1(e) F_OR(i, 0, e, 1)
#define F_OR2(i, e) F_OR(i, 0, e, 1)
#define F_OR3(i, b, e) F_OR(i, b, e, 1)
#define F_OR4(i, b, e, s) F_OR(i, b, e, s)
#define GET5(a, b, c, d, e, ...) e
#define F_ORC(...) GET5(__VA_ARGS__, F_OR4, F_OR3, F_OR2, F_OR1)
#define FOR(...)                                                               \\
  F_ORC(__VA_ARGS__)                                                           \\
  (__VA_ARGS__)
#define EACH(x, a) for (auto &x : a)

template <class A> void read(vt<A> &v);
template <class A, size_t S> void read(ar<A, S> &a);
template <class T> void read(T &x) { cin >> x; }
void read(double &d) {
  string t;
  read(t);
  d = stod(t);
}
void read(long double &d) {
  string t;
  read(t);
  d = stold(t);
}
template <class H, class... T> void read(H &h, T &...t) {
  read(h);
  read(t...);
}
template <class A> void read(vt<A> &x) {
  EACH(a, x)
  read(a);
}
template <class A, size_t S> void read(array<A, S> &x) {
  EACH(a, x)
  read(a);
}
string to_string(char c) { return string(1, c); }
string to_string(bool b) { return b ? "yes" : "no"; }
string to_string(const char *s) { return string(s); }
string to_string(string s) { return s; }
string to_string(vt<bool> v) {
  string res;
  FOR(sz(v))
  res += char('0' + v[i]);
  return res;
}

template <size_t S> string to_string(bitset<S> b) {
  string res;
  FOR(S)
  res += char('0' + b[i]);
  return res;
}
template <class T> string to_string(T v) {
  bool f = 1;
  string res;
  EACH(x, v) {
    if (!f)
      res += ' ';
    f = 0;
    res += to_string(x);
  }
  return res;
}

template <class A> void write(A x) { cout << to_string(x) << " "; }
template <class H, class... T> void write(const H &h, const T &...t) {
  write(h);
  write(t...);
}
void print() { cout << ("\\n"); }
template <class H, class... T> void print(const H &h, const T &...t) {
  write(h);
  if (sizeof...(t))
    write(' ');
  print(t...);
}

void deb() { cerr << endl; }

template <typename Head, typename... Tail> void deb(Head H, Tail... T) {
  cerr << to_string(H) << " ";
  deb(T...);
}

using ll = long long;

pair<const int, const int> dxdy[4] = {{0, 1}, {1, 0}, {-1, 0}, {0, -1}};

// Let's Code

const int MxN = 1e3 + 5;

int solve() {
  map<int, int> fx, fy;
  int h, w, m;
  read(h, w, m);
  set<pair<int, int>> s;
  FOR(m) {
    int x, y;
    read(x, y);
    s.insert({x, y});
    fx[x]++;
    fy[y]++;
  }
  int mx_x = 0, mx_y = 0;
  for (auto [x, y] : fx)
    mx_x = max(mx_x, y);

  for (auto [x, y] : fy)
    mx_y = max(mx_y, y);

  vt<int> xx, yy;
  for (auto [x, y] : fx)
    if (y == mx_x)
      xx.emplace_back(x);
  for (auto [x, y] : fy)
    if (y == mx_y)
      yy.emplace_back(x);

  for (auto x : xx) {
    for (auto y : yy) {
      if (s.find({x, y}) == s.end()) {
        return cout << mx_x + mx_y, 0;
      }
    }
  }
  cout << mx_x + mx_y - 1;
  return 0;
}
//

int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  // /freopen("output.txt", "w", stdout);
#endif

  int tc = 1;

  // UNCOMMENT FOR TEST CASE
  // cin >> tc;
  FOR(tc) {
    // write("Case #", i+1, ": ");
    solve();
  }
}


Error: WA

Fixed submission:

#include <bits/stdc++.h>
using namespace std;

#define Darr(x)                                                                \\
  cerr << #x << " = ";                                                         \\
  for (auto i : x)                                                             \\
    cerr << i << " ";                                                          \\
  cerr << "\\n";
#define ar array
#define pr pair
#define vt vector
#define pb push_back
#define all(c) (c).begin(), (c).end()
#define sz(x) (int)(x).size()

#define F_OR(i, a, b, s)                                                       \\
  for (int i = (a); (s) > 0 ? i < (b) : i > (b); i += (s))
#define F_OR1(e) F_OR(i, 0, e, 1)
#define F_OR2(i, e) F_OR(i, 0, e, 1)
#define F_OR3(i, b, e) F_OR(i, b, e, 1)
#define F_OR4(i, b, e, s) F_OR(i, b, e, s)
#define GET5(a, b, c, d, e, ...) e
#define F_ORC(...) GET5(__VA_ARGS__, F_OR4, F_OR3, F_OR2, F_OR1)
#define FOR(...)                                                               \\
  F_ORC(__VA_ARGS__)                                                           \\
  (__VA_ARGS__)
#define EACH(x, a) for (auto &x : a)

template <class A> void read(vt<A> &v);
template <class A, size_t S> void read(ar<A, S> &a);
template <class T> void read(T &x) { cin >> x; }
void read(double &d) {
  string t;
  read(t);
  d = stod(t);
}
void read(long double &d) {
  string t;
  read(t);
  d = stold(t);
}
template <class H, class... T> void read(H &h, T &...t) {
  read(h);
  read(t...);
}
template <class A> void read(vt<A> &x) {
  EACH(a, x)
  read(a);
}
template <class A, size_t S> void read(array<A, S> &x) {
  EACH(a, x)
  read(a);
}
string to_string(char c) { return string(1, c); }
string to_string(bool b) { return b ? "yes" : "no"; }
string to_string(const char *s) { return string(s); }
string to_string(string s) { return s; }
string to_string(vt<bool> v) {
  string res;
  FOR(sz(v))
  res += char('0' + v[i]);
  return res;
}

template <size_t S> string to_string(bitset<S> b) {
  string res;
  FOR(S)
  res += char('0' + b[i]);
  return res;
}
template <class T> string to_string(T v) {
  bool f = 1;
  string res;
  EACH(x, v) {
    if (!f)
      res += ' ';
    f = 0;
    res += to_string(x);
  }
  return res;
}

template <class A> void write(A x) { cout << to_string(x) << " "; }
template <class H, class... T> void write(const H &h, const T &...t) {
  write(h);
  write(t...);
}
void print() { cout << ("\\n"); }
template <class H, class... T> void print(const H &h, const T &...t) {
  write(h);
  if (sizeof...(t))
    write(' ');
  print(t...);
}

void deb() { cerr << endl; }

template <typename Head, typename... Tail> void deb(Head H, Tail... T) {
  cerr << to_string(H) << " ";
  deb(T...);
}

using ll = long long;

pair<const int, const int> dxdy[4] = {{0, 1}, {1, 0}, {-1, 0}, {0, -1}};

// Let's Code

const int MxN = 1e3 + 5;

int solve() {
  map<int, int> fx, fy;
  int h, w, m;
  read(h, w, m);
  set<pair<int, int>> s;
  FOR(m) {
    int x, y;
    read(x, y);
    s.insert({x, y});
    fx[x]++;
    fy[y]++;
  }
  int mx_x = 0, mx_y = 0;
  for (auto [x, y] : fx)
    mx_x = max(mx_x, y);

  for (auto [x, y] : fy)
    mx_y = max(mx_y, y);

  vt<int> xx, yy;
  for (auto [x, y] : fx)
    if (y == mx_x)
      xx.emplace_back(x);
  for (auto [x, y] : fy)
    if (y == mx_y)
      yy.emplace_back(x);
  for (auto x : xx) {
    for (auto y : yy) {
      if (s.find({x, y}) == s.end()) {
        return cout << mx_x + mx_y, 0;
      }
    }
  }
  cout << mx_x + mx_y - 1;
}
//

int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  // /freopen("output.txt", "w", stdout);
#endif

  int tc = 1;

  // UNCOMMENT FOR TEST CASE
  // cin >> tc;
  FOR(tc) {
    // write("Case #", i+1, ": ");
    solve();
  }
}