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
#include <bits/stdc++.h>

using namespace std;

int main() {
    int n;
    cin >> n;
    vector<char> mrowki(n);
    for (int i = 0; i < n; ++i) cin >> mrowki[i];

    vector<int> prawych_na_lewo(n, 0);
    int aktualnie = 0;
    for (int i = 0; i < n; ++i) {
        prawych_na_lewo[i] = aktualnie;
        if (mrowki[i] == 'P') ++aktualnie;
    }
    vector<int> lewych_na_prawo(n, 0);
    aktualnie = 0;
    for (int i = n - 1; i >= 0; --i) {
        lewych_na_prawo[i] = aktualnie;
        if (mrowki[i] == 'L') ++aktualnie;
    }

    vector<int> ans(n, 0);
    for (int i = 0; i < n; ++i) {
        ans[i] += 2 * min(prawych_na_lewo[i], lewych_na_prawo[i]);
        if ((prawych_na_lewo[i] < lewych_na_prawo[i] && mrowki[i] == 'P') ||
            (prawych_na_lewo[i] > lewych_na_prawo[i] && mrowki[i] == 'L'))
            ++ans[i];
    }
    for (auto x : ans) cout << x << " ";
    cout << endl;
}