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

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double lf;
typedef pair<int, int> ii;
typedef pair<ii, int> iii;
#define REP(i, n) for (int i = 0; i < n; i++)
#define REP1(i, n) for (int i = 1; i <= n; i++)
#define RST(i, n) memset(i, n, sizeof i)
#define SZ(a) (int)a.size()
#define ALL(a) a.begin(), a.end()
#define X first
#define Y second
#define eb emplace_back
#ifdef cold66
#define debug(...)                                                             \\
  do {                                                                         \\
    fprintf(stderr, "LINE %d: (%s) = ", __LINE__, #__VA_ARGS__);               \\
    _do(__VA_ARGS__);                                                          \\
  } while (0)
template <typename T> void _do(T &&_x) { cerr << _x << endl; }
template <typename T, typename... S> void _do(T &&_x, S &&..._t) {
  cerr << _x << ", ";
  _do(_t...);
}
template <typename _a, typename _b>
ostream &operator<<(ostream &_s, const pair<_a, _b> &_p) {
  return _s << "(" << _p.X << "," << _p.Y << ")";
}
template <typename It> ostream &_OUTC(ostream &_s, It _ita, It _itb) {
  _s << "{";
  for (It _it = _ita; _it != _itb; _it++) {
    _s << (_it == _ita ? "" : ",") << *_it;
  }
  _s << "}";
  return _s;
}
template <typename _a> ostream &operator<<(ostream &_s, vector<_a> &_c) {
  return _OUTC(_s, ALL(_c));
}
template <typename _a> ostream &operator<<(ostream &_s, set<_a> &_c) {
  return _OUTC(_s, ALL(_c));
}
template <typename _a, typename _b>
ostream &operator<<(ostream &_s, map<_a, _b> &_c) {
  return _OUTC(_s, ALL(_c));
}
template <typename _t> void pary(_t _a, _t _b) {
  _OUTC(cerr, _a, _b);
  cerr << endl;
}
#define IOS()
#else
#define debug(...)
#define pary(...)
#define endl '\\n'
#define IOS()                                                                  \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);
#endif // cold66
//}
template <class T> inline bool chkmax(T &a, const T &b) {
  return b > a ? a = b, true : false;
}
template <class T> inline bool chkmin(T &a, const T &b) {
  return b < a ? a = b, true : false;
}

const ll MAXn = 1e6 + 5, MAXlg = __lg(MAXn) + 2;
const ll MOD = 1000000007;
const ll INF = 0x3f3f3f3f;

ii d[MAXn];
int main() {
  IOS();
  int n;
  cin >> n;
  REP(i, n) {
    string s;
    cin >> s;
    int stk = 0;
    REP(j, SZ(s)) {
      if (s[j] == '(')
        stk++;
      else {
        if (stk)
          stk--;
        else
          d[i].Y++;
      }
    }
    d[i].X = stk;
  }

  vector<int> fr, bck, v;
  REP(i, n) {
    if (d[i].Y == 0)
      fr.eb(i);
    else if (d[i].X == 0)
      bck.eb(i);
    else
      v.eb(i);
  }
  sort(ALL(v), [&](const int a, const int b) {
    return d[a].X - d[a].Y > d[b].X - d[b].Y;
  });

  int cnt = 0;
  REP(i, SZ(fr)) cnt += d[fr[i]].X;
  REP(i, SZ(v)) {
    cnt -= d[v[i]].Y;
    if (cnt < 0)
      return cout << "No" << endl, 0;
    cnt += d[v[i]].X;
  }
  REP(i, SZ(bck)) cnt -= d[bck[i]].Y;
  if (cnt != 0)
    cout << "No" << endl;
  else
    cout << "Yes" << endl;
}


Error: 0

Fixed submission:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double lf;
typedef pair<int, int> ii;
typedef pair<ii, int> iii;
#define REP(i, n) for (int i = 0; i < n; i++)
#define REP1(i, n) for (int i = 1; i <= n; i++)
#define RST(i, n) memset(i, n, sizeof i)
#define SZ(a) (int)a.size()
#define ALL(a) a.begin(), a.end()
#define X first
#define Y second
#define eb emplace_back
#ifdef cold66
#define debug(...)                                                             \\
  do {                                                                         \\
    fprintf(stderr, "LINE %d: (%s) = ", __LINE__, #__VA_ARGS__);               \\
    _do(__VA_ARGS__);                                                          \\
  } while (0)
template <typename T> void _do(T &&_x) { cerr << _x << endl; }
template <typename T, typename... S> void _do(T &&_x, S &&..._t) {
  cerr << _x << ", ";
  _do(_t...);
}
template <typename _a, typename _b>
ostream &operator<<(ostream &_s, const pair<_a, _b> &_p) {
  return _s << "(" << _p.X << "," << _p.Y << ")";
}
template <typename It> ostream &_OUTC(ostream &_s, It _ita, It _itb) {
  _s << "{";
  for (It _it = _ita; _it != _itb; _it++) {
    _s << (_it == _ita ? "" : ",") << *_it;
  }
  _s << "}";
  return _s;
}
template <typename _a> ostream &operator<<(ostream &_s, vector<_a> &_c) {
  return _OUTC(_s, ALL(_c));
}
template <typename _a> ostream &operator<<(ostream &_s, set<_a> &_c) {
  return _OUTC(_s, ALL(_c));
}
template <typename _a, typename _b>
ostream &operator<<(ostream &_s, map<_a, _b> &_c) {
  return _OUTC(_s, ALL(_c));
}
template <typename _t> void pary(_t _a, _t _b) {
  _OUTC(cerr, _a, _b);
  cerr << endl;
}
#define IOS()
#else
#define debug(...)
#define pary(...)
#define endl '\\n'
#define IOS()                                                                  \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);
#endif // cold66
//}
template <class T> inline bool chkmax(T &a, const T &b) {
  return b > a ? a = b, true : false;
}
template <class T> inline bool chkmin(T &a, const T &b) {
  return b < a ? a = b, true : false;
}

const ll MAXn = 1e5 + 5, MAXlg = __lg(MAXn) + 2;
const ll MOD = 1000000007;
const ll INF = 0x3f3f3f3f;

ii d[MAXn];
int main() {
  IOS();
  int n;
  cin >> n;
  REP(i, n) {
    string s;
    cin >> s;
    int stk = 0;
    REP(j, SZ(s)) {
      if (s[j] == '(')
        stk++;
      else {
        if (stk)
          stk--;
        else
          d[i].Y++;
      }
    }
    d[i].X = stk;
  }

  bool fg = true;
  REP(i, n) if (d[i].X != 0 || d[i].Y != 0) fg = false;
  if (fg)
    return cout << "Yes" << endl, 0;

  sort(d, d + n, [&](const ii a, const ii b) {
    if (a.Y != b.Y)
      return a.Y < b.Y;
    return a.X > b.X;
  });

  int cnt = 0;
  REP(i, n) {
    cnt -= d[i].Y;
    if (cnt < 0)
      return cout << "No" << endl, 0;
    cnt += d[i].X;
  }
  if (cnt != 0)
    cout << "No" << endl;
  else
    cout << "Yes" << endl;
}