#include <bits/stdc++.h> using namespace std; const int MAX = 1e5 * 3 + 10; int L[MAX], P[MAX]; string s; void solve(int n){ for (int i = 1; i < n; i++){ if (s[i-1] == 'P'){ P[i]++; } P[i] += P[i-1]; } for (int i = n - 2; i >= 0; i--){ if (s[i+1] == 'L'){ L[i]++; } L[i] += L[i+1]; } for (int i = 0; i < n; i++){ if (s[i] == 'L'){ cout << min(P[i], L[i] + 1) + min(P[i], L[i]) << " "; } else { cout << min(P[i] + 1, L[i]) + min(P[i], L[i]) << " "; } } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; cin >> s; solve(n); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #include <bits/stdc++.h> using namespace std; const int MAX = 1e5 * 3 + 10; int L[MAX], P[MAX]; string s; void solve(int n){ for (int i = 1; i < n; i++){ if (s[i-1] == 'P'){ P[i]++; } P[i] += P[i-1]; } for (int i = n - 2; i >= 0; i--){ if (s[i+1] == 'L'){ L[i]++; } L[i] += L[i+1]; } for (int i = 0; i < n; i++){ if (s[i] == 'L'){ cout << min(P[i], L[i] + 1) + min(P[i], L[i]) << " "; } else { cout << min(P[i] + 1, L[i]) + min(P[i], L[i]) << " "; } } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; cin >> s; solve(n); } |