Problem p03244 (C++)

Buggy submission (status: Runtime Error):
#include <algorithm>
#include <complex>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <map>
#include <math.h>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <time.h>
#include <vector>

using namespace std;
#define SAY_YES cout << "YES" << endl;
#define SAY_Yes cout << "Yes" << endl;
#define SAY_NO cout << "NO" << endl;
#define SAY_No cout << "No" << endl;
#define IFYES(TRUE_OR_FALSE)                                                   \
  if (TRUE_OR_FALSE) {                                                         \
    cout << "YES" << endl;                                                     \
  } else {                                                                     \
    cout << "NO" << endl;                                                      \
  }
#define IFYes(TRUE_OR_FALSE)                                                   \
  if (TRUE_OR_FALSE) {                                                         \
    cout << "Yes" << endl;                                                     \
  } else {                                                                     \
    cout << "No" << endl;                                                      \
  }
#define IFyes(TRUE_OR_FALSE)                                                   \
  if (TRUE_OR_FALSE) {                                                         \
    cout << "yes" << endl;                                                     \
  } else {                                                                     \
    cout << "no" << endl;                                                      \
  }
#define DEBUG_OUTPUT_ARRAY(XXX, ONE)                                           \
  for (int i = 0; i < (ONE); i++) {                                            \
    cout << "DEBUG: i = " << i << " -> " << XXX[i] << endl;                    \
  }
#define DEBUG_OUTPUT_ARRAY2(XXX, ONE, TWO)                                     \
  for (int i = 0; i < (ONE); i++) {                                            \
    cout << "<<< i = " << i << " >>>" << endl;                                 \
    for (int j = 0; j < (TWO); j++) {                                          \
      cout << "DEBUG: j = " << j << " -> " << XXX[i][j] << endl;               \
    }                                                                          \
  }
#define DEBUG_OUTPUT_ARRAY2_BOX(XXX, ONE, TWO)                                 \
  for (int i = 0; i < (ONE); i++) {                                            \
    cout << i << "  ";                                                         \
    for (int j = 0; j < (TWO); j++) {                                          \
      cout << XXX[i][j] << " ";                                                \
    }                                                                          \
    cout << endl;                                                              \
  }

typedef pair<long long int, long long int> pll;

const long long int mod = 1000000007;
const long long int INF = 99999999999999999;

long long int N, M, A[6], B, C, D, E, tmp[100500] = {}, tmp2[100500] = {},
                                      cou = 0;
long long int first, firstid, second, secondid;
long long int first2, firstid2, second2, secondid2;
int main() {
  cout << fixed << setprecision(18);
  cin >> N;
  for (long long int i = 0; i < N; i++) {
    cin >> A[i];
  }
  for (long long int i = 0; i < N; i += 2) {
    tmp[A[i]]++;
  }
  for (long long int i = 1; i < N; i += 2) {
    tmp2[A[i]]++;
  }
  first = 0;
  for (long long int i = 1; i < 100010; i++) {
    if (first <= tmp[i]) {
      second = first;
      secondid = firstid;
      first = tmp[i];
      firstid = i;
    } else if (second <= tmp[i]) {
      second = tmp[i];
      secondid = i;
    }
  }
  first2 = 0;
  for (long long int i = 1; i < 100010; i++) {
    if (first2 <= tmp2[i]) {
      second2 = first2;
      secondid2 = firstid2;
      first2 = tmp2[i];
      firstid2 = i;
    } else if (second2 <= tmp2[i]) {
      second2 = tmp2[i];
      secondid2 = i;
    }
  }
  if (firstid != firstid2) {
    cout << N - first - first2 << endl;
  } else {
    cout << N - max(first + second2, second + first2) << endl;
  }
}


Fixed submission:
#include <algorithm>
#include <complex>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <map>
#include <math.h>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <time.h>
#include <vector>

using namespace std;
#define SAY_YES cout << "YES" << endl;
#define SAY_Yes cout << "Yes" << endl;
#define SAY_NO cout << "NO" << endl;
#define SAY_No cout << "No" << endl;
#define IFYES(TRUE_OR_FALSE)                                                   \
  if (TRUE_OR_FALSE) {                                                         \
    cout << "YES" << endl;                                                     \
  } else {                                                                     \
    cout << "NO" << endl;                                                      \
  }
#define IFYes(TRUE_OR_FALSE)                                                   \
  if (TRUE_OR_FALSE) {                                                         \
    cout << "Yes" << endl;                                                     \
  } else {                                                                     \
    cout << "No" << endl;                                                      \
  }
#define IFyes(TRUE_OR_FALSE)                                                   \
  if (TRUE_OR_FALSE) {                                                         \
    cout << "yes" << endl;                                                     \
  } else {                                                                     \
    cout << "no" << endl;                                                      \
  }
#define DEBUG_OUTPUT_ARRAY(XXX, ONE)                                           \
  for (int i = 0; i < (ONE); i++) {                                            \
    cout << "DEBUG: i = " << i << " -> " << XXX[i] << endl;                    \
  }
#define DEBUG_OUTPUT_ARRAY2(XXX, ONE, TWO)                                     \
  for (int i = 0; i < (ONE); i++) {                                            \
    cout << "<<< i = " << i << " >>>" << endl;                                 \
    for (int j = 0; j < (TWO); j++) {                                          \
      cout << "DEBUG: j = " << j << " -> " << XXX[i][j] << endl;               \
    }                                                                          \
  }
#define DEBUG_OUTPUT_ARRAY2_BOX(XXX, ONE, TWO)                                 \
  for (int i = 0; i < (ONE); i++) {                                            \
    cout << i << "  ";                                                         \
    for (int j = 0; j < (TWO); j++) {                                          \
      cout << XXX[i][j] << " ";                                                \
    }                                                                          \
    cout << endl;                                                              \
  }

typedef pair<long long int, long long int> pll;

const long long int mod = 1000000007;
const long long int INF = 99999999999999999;

long long int N, M, A[200000], B, C, D, E, tmp[100500] = {}, tmp2[100500] = {},
                                           cou = 0;
long long int first, firstid, second, secondid;
long long int first2, firstid2, second2, secondid2;
int main() {
  cout << fixed << setprecision(18);
  cin >> N;
  for (long long int i = 0; i < N; i++) {
    cin >> A[i];
  }
  for (long long int i = 0; i < N; i += 2) {
    tmp[A[i]]++;
  }
  for (long long int i = 1; i < N; i += 2) {
    tmp2[A[i]]++;
  }
  first = 0;
  for (long long int i = 1; i < 100010; i++) {
    if (first <= tmp[i]) {
      second = first;
      secondid = firstid;
      first = tmp[i];
      firstid = i;
    } else if (second <= tmp[i]) {
      second = tmp[i];
      secondid = i;
    }
  }
  first2 = 0;
  for (long long int i = 1; i < 100010; i++) {
    if (first2 <= tmp2[i]) {
      second2 = first2;
      secondid2 = firstid2;
      first2 = tmp2[i];
      firstid2 = i;
    } else if (second2 <= tmp2[i]) {
      second2 = tmp2[i];
      secondid2 = i;
    }
  }
  if (firstid != firstid2) {
    cout << N - first - first2 << endl;
  } else {
    cout << N - max(first + second2, second + first2) << endl;
  }
}