Problem p02756 (C++)

Buggy submission (status: Runtime Error):
//----------------------------templates
#pragma GCC optimize("Ofast")
#ifdef ONLINE_JUDGE
#pragma GCC target("avx512f")
#else
#pragma GCC target("avx2")
#endif
//----------------------------
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;
#define int ll

#define FOR(i, j, n) for (int i = (int)(j); i < (n); i++)
#define REP(i, n) for (int i = 0; i < (int)(n); i++)
#define REPS(i, n) for (int i = 1; i <= (int)(n); i++)
#define REPN(i, n) for (int i = (int)(n)-1; i >= 0; i--)
#define REPNS(i, n) for (int i = (int)(n); i > 0; i--)

#define I(n) scanf("%lld", &(n))
#define LL(n) scanf("%lld", &(n))
#define pb(n) push_back((n))
#define mp(i, j) make_pair((i), (j))
#define eb(i, j) emplace_back((i), (j))
#define y0 y3487465
#define y1 y8687969
#define j0 j1347829
#define j1 j234892
#define uniq(v) v.erase(unique(v.begin(), v.end()), v.end())

#define all(x) (x).begin(), (x).end()
#define sz(x) ((int)(x).size())

typedef vector<int> vi;
typedef pair<int, int> pi;
typedef vector<pi> vpi;
typedef vector<vi> vvi;
typedef vector<vpi> vvpi;
typedef vector<vvi> vvvi;

const int mod = 1000000007;

//--------------------------------------------

string s;
deque<char> dc;
bool revflag = false;
int q, t, f;
char c;

signed main() {
  cin >> s;
  for (auto cs : s)
    dc.pb(cs);
  cin >> q;
  REP(i, q) {
    cin >> t;
    if (t == 1) {
      revflag ^= 1;
    } else {
      cin >> f >> c;
      if ((f == 1) ^ revflag) {
        dc.push_front(c);
      } else {
        dc.push_back(c);
      }
    }
  }
  if (revflag) {
    for (auto it = dc.rbegin(); it != dc.rend(); it++)
      cout << *it;
  } else {
    for (auto it = dc.begin(); it != dc.end(); it++)
      cout << *it;
  }
  cout << endl;
}

Fixed submission:
//----------------------------templates
#pragma GCC optimize("Ofast")
#ifdef ONLINE_JUDGE
#pragma GCC target("avx512f")
#else
#pragma GCC target("avx")
#endif
//----------------------------
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;
#define int ll

#define FOR(i, j, n) for (int i = (int)(j); i < (n); i++)
#define REP(i, n) for (int i = 0; i < (int)(n); i++)
#define REPS(i, n) for (int i = 1; i <= (int)(n); i++)
#define REPN(i, n) for (int i = (int)(n)-1; i >= 0; i--)
#define REPNS(i, n) for (int i = (int)(n); i > 0; i--)

#define I(n) scanf("%lld", &(n))
#define LL(n) scanf("%lld", &(n))
#define pb(n) push_back((n))
#define mp(i, j) make_pair((i), (j))
#define eb(i, j) emplace_back((i), (j))
#define y0 y3487465
#define y1 y8687969
#define j0 j1347829
#define j1 j234892
#define uniq(v) v.erase(unique(v.begin(), v.end()), v.end())

#define all(x) (x).begin(), (x).end()
#define sz(x) ((int)(x).size())

typedef vector<int> vi;
typedef pair<int, int> pi;
typedef vector<pi> vpi;
typedef vector<vi> vvi;
typedef vector<vpi> vvpi;
typedef vector<vvi> vvvi;

const int mod = 1000000007;

//--------------------------------------------

string s;
deque<char> dc;
bool revflag = false;
int q, t, f;
char c;

signed main() {
  cin >> s;
  for (auto cs : s)
    dc.pb(cs);
  cin >> q;
  REP(i, q) {
    cin >> t;
    if (t == 1) {
      revflag ^= 1;
    } else {
      cin >> f >> c;
      if ((f == 1) ^ revflag) {
        dc.push_front(c);
      } else {
        dc.push_back(c);
      }
    }
  }
  if (revflag) {
    for (auto it = dc.rbegin(); it != dc.rend(); it++)
      cout << *it;
  } else {
    for (auto it = dc.begin(); it != dc.end(); it++)
      cout << *it;
  }
  cout << endl;
}