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

//
//  main.cpp
//  ervb
//
//  Created by Kanak Gautam on 21/04/20.
//  Copyright © 2020 Kanak Gautam. All rights reserved.
//

#include <algorithm>
#include <cassert>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>
#define pb push_back
#define mk make_pair
#define endl "\\n"
#define mod 1000000007
using namespace std;
typedef long long int lli;
typedef long double ld;
priority_queue<lli, vector<lli>, greater<lli>> ti;
vector<lli> p[300005], q[300005], b(300005, 0), f(300005, 0);
lli vis[200005];
map<pair<lli, lli>, lli> mp;
set<pair<lli, lli>> s;
set<lli> st;
map<lli, lli> np, v;
queue<lli> qy;
lli gcd(lli a, lli b) {
  if (b == 0)
    return a;
  return gcd(b, a % b);
}
lli bpow(lli a, lli b) {
  lli res = 1;
  while (b > 0) {
    if (b & 1)
      res = (res * a) % mod;
    a = (a * a) % mod;
    b >>= 1;
  }
  return res % mod;
}
lli fact(lli i) {
  f[0] = 1;
  for (lli k = 1; k <= i; k++) {
    (f[k] = f[k - 1] * k) %= mod;
  }
  return f[i];
}
lli isprime(lli n) {
  if (n == 1)
    return 0;
  for (lli i = 2; i <= sqrt(n); i++)
    if (n % i == 0)
      return 0;
  return 1;
}
bool cmp(lli i, lli j) { return p[i].size() < p[j].size(); }
void sieve() {
  for (lli i = 2; i <= 5000000; i++) {
    if (b[i] == 0) {
      for (lli j = 2; i * j <= 5000000; j++) {
        b[i * j] = 1;
      }
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  lli h, w, m;
  cin >> h >> w >> m;
  map<lli, lli> r;
  map<lli, lli> c;
  map<pair<lli, lli>, lli> a;
  lli x, y, mx1 = 0, mx2 = 0;
  for (lli i = 1; i <= m; i++) {
    cin >> x >> y;
    a[{x, y}]++;
    r[x]++;
    c[y]++;
    a[{x, y}] = 1;
    if (r[x] >= mx1) {
      mx1 = r[x];
      p[mx1].pb(x);
    }
    if (c[y] >= mx2) {
      mx2 = c[y];
      q[mx2].pb(y);
    }
  }
  lli ans = 0;
  for (auto u : p[mx1]) {
    for (auto v : q[mx2]) {
      // cout<<u<<" "<<v<<endl;
      if (a[{u, v}] == 0) {
        ans = r[u] + c[v];
        break;
      } else {
        ans = max(ans, r[u] + c[v] - a[{u, v}]);
      }
    }
  }
  cout << ans << endl;
}


Error: 0

Fixed submission:

//
//  main.cpp
//  ervb
//
//  Created by Kanak Gautam on 21/04/20.
//  Copyright © 2020 Kanak Gautam. All rights reserved.
//

#include <algorithm>
#include <cassert>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>
#define pb push_back
#define mk make_pair
#define endl "\\n"
#define mod 1000000007
using namespace std;
typedef long long int lli;
typedef long double ld;
priority_queue<lli, vector<lli>, greater<lli>> ti;
vector<lli> p[200005], h, b(200005, 0), f(200005, 0);
lli vis[200005];
map<pair<lli, lli>, lli> mp;
set<pair<lli, lli>> s;
set<lli> st;
map<lli, lli> np, v;
queue<lli> qy;
lli gcd(lli a, lli b) {
  if (b == 0)
    return a;
  return gcd(b, a % b);
}
lli bpow(lli a, lli b) {
  lli res = 1;
  while (b > 0) {
    if (b & 1)
      res = (res * a) % mod;
    a = (a * a) % mod;
    b >>= 1;
  }
  return res % mod;
}
lli fact(lli i) {
  f[0] = 1;
  for (lli k = 1; k <= i; k++) {
    (f[k] = f[k - 1] * k) %= mod;
  }
  return f[i];
}
lli isprime(lli n) {
  if (n == 1)
    return 0;
  for (lli i = 2; i <= sqrt(n); i++)
    if (n % i == 0)
      return 0;
  return 1;
}
bool cmp(lli i, lli j) { return p[i].size() < p[j].size(); }
void sieve() {
  for (lli i = 2; i <= 5000000; i++) {
    if (b[i] == 0) {
      for (lli j = 2; i * j <= 5000000; j++) {
        b[i * j] = 1;
      }
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  lli h, w, m;
  cin >> h >> w >> m;
  vector<lli> r(h + 1, 0);
  vector<lli> c(w + 1, 0);
  vector<vector<lli>> a(h + 1, vector<lli>(w + 1, 0));
  lli x, y, mx1 = 0, mx2 = 0, d = 0, b = 0;
  for (lli i = 1; i <= m; i++) {
    cin >> x >> y;
    a[x][y]++;
    r[x]++;
    c[y]++;
    if (r[x] > mx1) {
      mx1 = r[x];
      d = x;
    }
    if (c[y] > mx2) {
      mx2 = c[y];
      b = y;
    }
  }
  cout << mx1 + mx2 - a[d][b] << endl;
}