#include<cmath> #include<iostream> #include<algorithm> #include<vector> #include<bitset> using namespace std; typedef long long ll; const int N = 2e5 + 10; int n, m; string s; int sx[N], sy[N]; int x, y; vector<int> a, b; int ans[N]; void solve() { int n; string s; cin >> n >> s; reverse(s.begin(), s.end()); int now = n - 1; for (auto t : s) { if (t == 'R') a.push_back(now); else b.push_back(now); now --; } reverse(a.begin(), a.end()); for (auto t : a) cout << t << " "; cout << n << " "; for (auto t : b) cout << t << " "; } int main () { int t; t = 1; while (t --) solve(); return 0; }
通过把L和R分类看,发现分布规律,L和R的数字一定在一堆,不会交叉。之前就是在想如何处理交叉问题