Problem p02721 (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 = 2e5 + 5, MAXlg = __lg(MAXn) + 2;
const ll MOD = 1000000007;
const ll INF = 0x3f3f3f3f;

int n, k, c;
int l[MAXn], r[MAXn];
int main() {
  IOS();
  cin >> n >> k >> c;
  string s;
  cin >> s;
  int idx = 0;
  REP(i, n) {
    if (s[i] == 'o') {
      l[++idx] = i;
      if (idx >= k)
        break;
      i += c;
    }
  }
  idx = k;
  for (int i = n - 1; i >= 0; i--) {
    if (s[i] == 'o') {
      r[idx--] = i;
      if (idx <= 0)
        break;
      i -= c;
    }
  }

  REP1(i, k) if (l[i] == r[i]) cout << l[i] + 1 << 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;

int l[MAXn], r[MAXn];
int main() {
  IOS();
  int n, k, c;
  cin >> n >> k >> c;
  string s;
  cin >> s;
  if (c == 0)
    return 0;
  int cnt = 0;
  REP(i, n) {
    if (s[i] == 'o') {
      cnt++;
      int nxt = min(n, i + c + 1);
      for (int j = i; j < nxt; j++)
        l[j] = cnt;
      i = nxt - 1;
    } else
      l[i] = cnt;
  }
  cnt = 0;
  for (int i = n - 1; i >= 0; i--) {
    if (s[i] == 'o') {
      cnt++;
      int nxt = max(-1, i - c - 1);
      for (int j = i; j > nxt; j--)
        r[j] = cnt;
      i = nxt + 1;
    } else
      r[i] = cnt;
  }
  pary(l, l + n);
  pary(r, r + n);
  REP(i, n) {
    if (s[i] == 'o') {
      int lb = i - c - 1, rb = i + c + 1;
      int mx = 0;
      if (lb >= 0)
        mx += l[lb];
      if (rb < n)
        mx += r[rb];
      if (mx < k - 1)
        s[i] = 'x';
    }
  }
  vector<int> v;
  REP(i, n) {
    if (s[i] == 'o')
      v.eb(i);
  }
  debug(s);
  vector<int> ans;
  if (SZ(v) == 1) {
    cout << v[0] + 1 << endl;
  } else {
    REP(i, SZ(v)) {
      if (i == 0) {
        if (v[i + 1] > v[i] + c)
          ans.eb(v[i]);
      } else if (i == SZ(v) - 1) {
        if (v[i - 1] < v[i] - c)
          ans.eb(v[i]);
      } else {
        if (v[i + 1] > v[i] + c && v[i - 1] < v[i] - c)
          ans.eb(v[i]);
      }
    }
    REP(i, SZ(ans)) cout << ans[i] + 1 << endl;
  }
}