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

#include <algorithm>
#include <bitset>
#include <cmath>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <tuple>
#include <unordered_map>
#include <unordered_set>
#include <vector>

using namespace std;

#define fori(t) for (int i = 0; i < t; ++i)
#define forj(n) for (int j = 0; j < n; ++j)
#define fork(n) for (int k = 0; k < n; ++k)
#define forai(a) for (auto &i : a)
#define foraj(a) for (auto &j : a)
#define forak(a) for (auto &k : a)
#define forp(s, n, d) for (int p = s; p < n; p += d)
#define fast                                                                   \\
  cin.tie(0);                                                                  \\
  cout.tie(0);                                                                 \\
  std::ios_base::sync_with_stdio(0);
#define pb(a) push_back(a);
#define pob(a) pop_back(a);
#define sorti(a) sort(a.begin(), a.end());
#define sortm(a, n) sort(a, a + n);
#define reversi(a) reverse(a.begin(), a.end());
#define fi first
#define se second
#define yes cout << "Yes\\n";
#define no cout << "No\\n";
#define ans(a) cout << a << '\\n';
#define res(a, n) a.resize(n);
#define read(a, n)                                                             \\
  a.resize(n);                                                                 \\
  fori(n) cin >> a[i];
// #define int long long
// #define double long double

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> ii;
typedef pair<long long, long long> llll;
typedef vector<int> vi;
typedef vector<long long> vll;
typedef vector<pair<int, int>> vii;
typedef vector<pair<int, pair<int, int>>> viii;
typedef pair<int, pair<int, int>> iii;
typedef vector<pair<long long, long long>> vllll;
typedef vector<vector<int>> vvi;
typedef vector<vector<ll>> vvll;
typedef vector<bool> vb;
typedef pair<char, char> cc;
typedef pair<pair<char, char>, char> ccc;
typedef vector<char> vc;
typedef pair<int, char> ic;
typedef pair<ii, char> iic;
typedef vector<bool> vb;
typedef set<int> si;
typedef set<ii> sii;

const int INF = 2147483647;
const ll LONGINF = 9223372036854775807;
const ll MOD = 998244353;

string c;

void solve() {
  int n;
  cin >> n >> c;
  int lastR = n - 1, firstW = 0, counter = 0;
  while (lastR > firstW && lastR >= 0 && firstW < n) {
    while (c[firstW] != 'W' && firstW < n)
      ++firstW;
    while (c[lastR] != 'R' && lastR >= 0)
      --lastR;
    if (lastR <= firstW || lastR < 0 || firstW >= n)
      break;
    swap(c[lastR], c[firstW]);
    ++counter;
    --lastR;
    ++firstW;
  }
  ans(counter)
}

signed main() {
  fast bool mult = false;
  if (mult) {
    int t;
    cin >> t;
    while (t--)
      solve();
  } else
    solve();
}


Error: 0

Fixed submission:

#include <algorithm>
#include <bitset>
#include <cmath>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <tuple>
#include <unordered_map>
#include <unordered_set>
#include <vector>

using namespace std;

#define fori(t) for (int i = 0; i < t; ++i)
#define forj(n) for (int j = 0; j < n; ++j)
#define fork(n) for (int k = 0; k < n; ++k)
#define forai(a) for (auto &i : a)
#define foraj(a) for (auto &j : a)
#define forak(a) for (auto &k : a)
#define forp(s, n, d) for (int p = s; p < n; p += d)
#define fast                                                                   \\
  cin.tie(0);                                                                  \\
  cout.tie(0);                                                                 \\
  std::ios_base::sync_with_stdio(0);
#define pb(a) push_back(a);
#define pob(a) pop_back(a);
#define sorti(a) sort(a.begin(), a.end());
#define sortm(a, n) sort(a, a + n);
#define reversi(a) reverse(a.begin(), a.end());
#define fi first
#define se second
#define yes cout << "Yes\\n";
#define no cout << "No\\n";
#define ans(a) cout << a << '\\n';
#define res(a, n) a.resize(n);
#define read(a, n)                                                             \\
  a.resize(n);                                                                 \\
  fori(n) cin >> a[i];
// #define int long long
// #define double long double

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> ii;
typedef pair<long long, long long> llll;
typedef vector<int> vi;
typedef vector<long long> vll;
typedef vector<pair<int, int>> vii;
typedef vector<pair<int, pair<int, int>>> viii;
typedef pair<int, pair<int, int>> iii;
typedef vector<pair<long long, long long>> vllll;
typedef vector<vector<int>> vvi;
typedef vector<vector<ll>> vvll;
typedef vector<bool> vb;
typedef pair<char, char> cc;
typedef pair<pair<char, char>, char> ccc;
typedef vector<char> vc;
typedef pair<int, char> ic;
typedef pair<ii, char> iic;
typedef vector<bool> vb;
typedef set<int> si;
typedef set<ii> sii;

const int INF = 2147483647;
const ll LONGINF = 9223372036854775807;
const ll MOD = 998244353;

string c;

void solve() {
  int n;
  cin >> n >> c;
  int lastR = n - 1, firstW = 0, counter = 0;
  while (lastR > firstW && lastR >= 0 && firstW < n) {
    while (c[firstW] != 'W')
      ++firstW;
    while (c[lastR] != 'R')
      --lastR;
    if (lastR <= firstW || lastR < 0 || firstW >= n)
      break;
    swap(c[lastR], c[firstW]);
    ++counter;
    --lastR;
    ++firstW;
  }
  ans(counter)
}

signed main() {
  fast bool mult = false;
  if (mult) {
    int t;
    cin >> t;
    while (t--)
      solve();
  } else
    solve();
}