Problem p02975 (C++)

Buggy submission (status: Runtime Error):
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")

#include <bits/stdc++.h>

using namespace std;

#define MP make_pair
#define ALL(x) (x).begin(), (x).end()
#define SZ(x) (int((x.size())))
#define fi first
#define se second
#define REP(i, a, n) for (int(i) = (a); (i) < (n); (i)++)
#define PER(i, a, n) for (int(i) = (n)-1; (i) >= (a); (i)--)

typedef long double ld;
typedef long long ll;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef pair<ll, ll> PLL;
typedef vector<ll> VL;
typedef vector<PLL> VPL;
typedef vector<PII> VPI;

// #ifndef ONLINE_JUDGE
#define dbb(x)                                                                 \
  { cerr << #x << " = " << x << "\t"; }
#define db(x)                                                                  \
  {                                                                            \
    dbb(x);                                                                    \
    cerr << endl;                                                              \
  }
#define db2(x, y)                                                              \
  {                                                                            \
    dbb(x);                                                                    \
    dbb(y);                                                                    \
    cerr << endl;                                                              \
  }
#define db3(x, y, z)                                                           \
  {                                                                            \
    dbb(x);                                                                    \
    dbb(y);                                                                    \
    dbb(z);                                                                    \
    cerr << endl;                                                              \
  }
// #else
// #define dbb(x)		;
// #define db(x)		;
// #define db2(x,y)	;
// #define db3(x,y,z)	;
// #endif

const ll MOD = 1000000007ll;

ll powmod(ll a, ll b) {
  ll res = 1;
  a %= MOD;
  assert(b >= 0);
  for (; b; b >>= 1) {
    if (b & 1)
      res = res * a % MOD;
    a = a * a % MOD;
  }
  return res;
}

template <typename t1, typename t2> inline bool upmax(t1 &a, t2 b) {
  if (a < (t1)b) {
    a = (t1)b;
    return true;
  } else
    return false;
}

template <typename t1, typename t2> inline bool upmin(t1 &a, t2 b) {
  if (a > (t1)b) {
    a = (t1)b;
    return true;
  } else
    return false;
}

template <typename T> inline T gcd(T a, T b) { return b ? gcd(b, a % b) : a; }

template <typename T> inline T lcm(T a, T b) { return a * (b / gcd(a, b)); }

template <typename T> inline T sqr(T a) { return a * a; }

int dx[] = {1, 0, -1, 0, 1, 1, -1, -1};
int dy[] = {0, 1, 0, -1, 1, -1, 1, -1};
int dkx[] = {-1, -1, 1, 1, -2, -2, 2, 2};
int dky[] = {-2, 2, -2, 2, -1, 1, -1, 1};

const int INF = 1000000404;
const ll LINF = 1e18 * (1ll);
const ld PI = 3.14159265358979323846;
const ld EPS = 1e-9;

const int SQ = 318;
int timer = 0;

#define N 100100

int a[N];

void solve() {

  int n;
  cin >> n;
  map<int, int> cnt;
  REP(i, 0, n) {
    cin >> a[i];
    cnt[a[i]]++;
  }
  sort(a, a + n);

  if (a[n - 1] == 0) {
    cout << "Yes";
    return;
  }

  int A = a[0];
  int B = a[n / 2];
  int C = a[n - 1];
  if (n % 3 == 0 && SZ(cnt) == 2) {
    if (A == 0 && cnt[A] == n / 3 && cnt[B] == 2 * n / 3) {
      cout << "Yes" << endl;
      return;
    }
  }
  if (n % 3 == 0 && SZ(cnt) == 3) {

    if (cnt[A] == cnt[B] && cnt[B] == cnt[C] && cnt[A] == n / 3) {
      if ((A ^ B) == C || (A ^ C) == B) {
        cout << "Yes" << endl;
        return;
      }
    }
  }
  cout << "No";
}

int main() {

#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
#else
  // freopen("mantan.in", "r", stdin);
  // freopen("mantan.out", "w", stdout);
#endif

  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);

  int t = 1;
  // cin >> t;
  for (int i = 1; i <= t; i++) {
    solve();
  }

  return 0;
}

Fixed submission:
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")

#include <bits/stdc++.h>

using namespace std;

#define MP make_pair
#define ALL(x) (x).begin(), (x).end()
#define SZ(x) (int((x.size())))
#define fi first
#define se second
#define REP(i, a, n) for (int(i) = (a); (i) < (n); (i)++)
#define PER(i, a, n) for (int(i) = (n)-1; (i) >= (a); (i)--)

typedef long double ld;
typedef long long ll;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef pair<ll, ll> PLL;
typedef vector<ll> VL;
typedef vector<PLL> VPL;
typedef vector<PII> VPI;

// #ifndef ONLINE_JUDGE
#define dbb(x)                                                                 \
  { cerr << #x << " = " << x << "\t"; }
#define db(x)                                                                  \
  {                                                                            \
    dbb(x);                                                                    \
    cerr << endl;                                                              \
  }
#define db2(x, y)                                                              \
  {                                                                            \
    dbb(x);                                                                    \
    dbb(y);                                                                    \
    cerr << endl;                                                              \
  }
#define db3(x, y, z)                                                           \
  {                                                                            \
    dbb(x);                                                                    \
    dbb(y);                                                                    \
    dbb(z);                                                                    \
    cerr << endl;                                                              \
  }
// #else
// #define dbb(x)		;
// #define db(x)		;
// #define db2(x,y)	;
// #define db3(x,y,z)	;
// #endif

const ll MOD = 1000000007ll;

ll powmod(ll a, ll b) {
  ll res = 1;
  a %= MOD;
  assert(b >= 0);
  for (; b; b >>= 1) {
    if (b & 1)
      res = res * a % MOD;
    a = a * a % MOD;
  }
  return res;
}

template <typename t1, typename t2> inline bool upmax(t1 &a, t2 b) {
  if (a < (t1)b) {
    a = (t1)b;
    return true;
  } else
    return false;
}

template <typename t1, typename t2> inline bool upmin(t1 &a, t2 b) {
  if (a > (t1)b) {
    a = (t1)b;
    return true;
  } else
    return false;
}

template <typename T> inline T gcd(T a, T b) { return b ? gcd(b, a % b) : a; }

template <typename T> inline T lcm(T a, T b) { return a * (b / gcd(a, b)); }

template <typename T> inline T sqr(T a) { return a * a; }

int dx[] = {1, 0, -1, 0, 1, 1, -1, -1};
int dy[] = {0, 1, 0, -1, 1, -1, 1, -1};
int dkx[] = {-1, -1, 1, 1, -2, -2, 2, 2};
int dky[] = {-2, 2, -2, 2, -1, 1, -1, 1};

const int INF = 1000000404;
const ll LINF = 1e18 * (1ll);
const ld PI = 3.14159265358979323846;
const ld EPS = 1e-9;

const int SQ = 318;
int timer = 0;

#define N 100100

int a[N];

void solve() {

  int n;
  cin >> n;
  map<int, int> cnt;
  REP(i, 0, n) {
    cin >> a[i];
    cnt[a[i]]++;
  }
  sort(a, a + n);

  if (a[n - 1] == 0) {
    cout << "Yes";
    return;
  }

  int A = a[0];
  int B = a[n / 2];
  int C = a[n - 1];
  if (n % 3 == 0 && SZ(cnt) == 2) {
    if (A == 0 && cnt[A] == n / 3 && cnt[B] == 2 * n / 3) {
      cout << "Yes" << endl;
      return;
    }
  }
  if (n % 3 == 0 && SZ(cnt) == 3) {

    if (cnt[A] == cnt[B] && cnt[B] == cnt[C] && cnt[A] == n / 3) {
      if ((A ^ B) == C || (A ^ C) == B) {
        cout << "Yes" << endl;
        return;
      }
    }
  }
  cout << "No";
}

int main() {

#ifndef ONLINE_JUDGE

#else
  // freopen("mantan.in", "r", stdin);
  // freopen("mantan.out", "w", stdout);
#endif

  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);

  int t = 1;
  // cin >> t;
  for (int i = 1; i <= t; i++) {
    solve();
  }

  return 0;
}