Problem p02580 (C++) — buggy submission, verdict: Time Limit Exceeded

#include <cmath>
#include <deque>
#include <iostream>
#include <map>
#include <set>
#include <string>
#include <vector>

using namespace std;

#define FOR(i, start, end) for (ll i = (start); i < (end); i++)
#define rep(i, n) FOR(i, 0, n)
#define all(x) (x).begin(), (x).end()
#define ctoi(c) c - '0'
#define tos(s) to_string(s)
#define pii pair<int, int>

typedef long long ll;

int main() {
  int h, w, m;
  cin >> h >> w >> m;
  int x[h + 1], y[w + 1];
  map<pii, int> a;
  vector<int> v1, v2;
  rep(i, h + 1) { x[i] = 0; }
  rep(i, w + 1) { y[i] = 0; }

  int hh, ww;
  rep(i, m) {
    cin >> hh >> ww;
    x[hh]++;
    y[ww]++;
    a[make_pair(hh, ww)] = 1;
  }

  int maxx = 0;
  rep(i, h + 1) { maxx = max(maxx, x[i]); }

  int maxy = 0;
  rep(i, w + 1) { maxy = max(maxy, y[i]); }

  rep(i, h + 1) if (x[i] == maxx) v1.push_back(i);
  rep(i, w + 1) if (y[i] == maxy) v2.push_back(i);
  bool flag = false;
  for (int p : v1) {
    for (int pp : v2) {
      if (!a.count(make_pair(p, pp))) {
        flag = true;
        break;
      }
      if (flag)
        break;
    }
  }

  if (flag)
    cout << maxx + maxy << endl;
  else
    cout << maxx + maxy - 1 << endl;
  return 0;
}

/*
ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC
                                   ******,  .,, .,, ,,,    ****.**
                                   ** . .,,,,,,,,,,,,,,,,,,,,,. .,*
                                   **,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.
                                .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.
                                .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.
                    ****      ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
              ***************,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
         ********************,,,,,,,,,,,,,,@@@,,,,,,,,,,,/@@@,,,,,,,,,,,,,,,
        ******************,,,,,,,,,,,,,,,,,,(,,.         ,,,,,,,,,,,,,,,,,,,
       ********************,,,,,,,,,,,*,,,,,.     %&&&     .,,,,*,,,,,,,,,,,,.
       ***,,,,,,,,,,,,,,*,,,,,,,,,,,,,,,,,,,,               ,,,,,,,,,,,,,,,,,
       ,,,,,,,,,,,,,,,,,,,**,,,,,,,,,,.......      ##(     ........,,,,,,,,,,.
     .,,,,,,,,,,,,,,,,,,**,,,,,,,,,,..............    ..............,,,,,,,,
    .,,,,,,,,,,,,,,,,,,,**,,,,,,,,,.................................,,,,,,,,,
   ,,,,,,,,,,,,,,,,,,,,***,,,,,,,....................................,,,,,,,,,
   ,,,,,,,,,,,,,,,,,,,,**,,,,,,,,.....................................,,,,,,,
   ,,,,,,,,,,,,,,,,,,,,,**,,,,,,,,....................................,,,,,,,
   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.....................................,,,,,
   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...................................,.,,,,,
    ,,,,,,,,,,,,,,,,,,,,,,,,,,,,.....................................,,,
     ,,,,,,,,,,,,,,,,,,,,,,,,,,,,....................................,,,
      ,,,,,,,,,,,,,,,,,,,,,,,,,,,,...................................,
       ..,,,,,,,,,,,,,,,,,,,,,,,,,,.................................,
       .........**.....       ,,,,,..............................
        .......*......                  ****,**,       ,..****
        .......*,....                   .......        ......
          .......*....                   .....          .....
                                         ......          .....
*/

Error: TLE

Fixed submission:

#include <cmath>
#include <deque>
#include <iostream>
#include <map>
#include <set>
#include <string>
#include <vector>

using namespace std;

#define FOR(i, start, end) for (ll i = (start); i < (end); i++)
#define rep(i, n) FOR(i, 0, n)
#define all(x) (x).begin(), (x).end()
#define ctoi(c) c - '0'
#define tos(s) to_string(s)
#define pii pair<int, int>

typedef long long ll;

int main() {
  int h, w, m;
  cin >> h >> w >> m;
  int x[h + 1], y[w + 1];
  map<pii, int> a;
  vector<int> v1, v2;
  rep(i, h + 1) { x[i] = 0; }
  rep(i, w + 1) { y[i] = 0; }

  int hh, ww;
  rep(i, m) {
    cin >> hh >> ww;
    x[hh]++;
    y[ww]++;
    a[make_pair(hh, ww)] = 1;
  }

  int maxx = 0;
  rep(i, h + 1) { maxx = max(maxx, x[i]); }

  int maxy = 0;
  rep(i, w + 1) { maxy = max(maxy, y[i]); }

  rep(i, h + 1) if (x[i] == maxx) v1.push_back(i);
  rep(i, w + 1) if (y[i] == maxy) v2.push_back(i);
  bool flag = false;
  for (int p : v1) {
    for (int pp : v2) {
      if (!a.count(make_pair(p, pp))) {
        flag = true;
      }
    }
  }

  if (flag)
    cout << maxx + maxy << endl;
  else
    cout << maxx + maxy - 1 << endl;
  return 0;
}

/*
ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC
                                   ******,  .,, .,, ,,,    ****.**
                                   ** . .,,,,,,,,,,,,,,,,,,,,,. .,*
                                   **,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.
                                .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.
                                .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.
                    ****      ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
              ***************,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
         ********************,,,,,,,,,,,,,,@@@,,,,,,,,,,,/@@@,,,,,,,,,,,,,,,
        ******************,,,,,,,,,,,,,,,,,,(,,.         ,,,,,,,,,,,,,,,,,,,
       ********************,,,,,,,,,,,*,,,,,.     %&&&     .,,,,*,,,,,,,,,,,,.
       ***,,,,,,,,,,,,,,*,,,,,,,,,,,,,,,,,,,,               ,,,,,,,,,,,,,,,,,
       ,,,,,,,,,,,,,,,,,,,**,,,,,,,,,,.......      ##(     ........,,,,,,,,,,.
     .,,,,,,,,,,,,,,,,,,**,,,,,,,,,,..............    ..............,,,,,,,,
    .,,,,,,,,,,,,,,,,,,,**,,,,,,,,,.................................,,,,,,,,,
   ,,,,,,,,,,,,,,,,,,,,***,,,,,,,....................................,,,,,,,,,
   ,,,,,,,,,,,,,,,,,,,,**,,,,,,,,.....................................,,,,,,,
   ,,,,,,,,,,,,,,,,,,,,,**,,,,,,,,....................................,,,,,,,
   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.....................................,,,,,
   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...................................,.,,,,,
    ,,,,,,,,,,,,,,,,,,,,,,,,,,,,.....................................,,,
     ,,,,,,,,,,,,,,,,,,,,,,,,,,,,....................................,,,
      ,,,,,,,,,,,,,,,,,,,,,,,,,,,,...................................,
       ..,,,,,,,,,,,,,,,,,,,,,,,,,,.................................,
       .........**.....       ,,,,,..............................
        .......*......                  ****,**,       ,..****
        .......*,....                   .......        ......
          .......*....                   .....          .....
                                         ......          .....
*/