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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include<iostream>
#include <vector>

using namespace std;

vector<char> mrowki;
vector<int> zmiany;

void ruch2(int pocz, int kon) {
	int i;
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    if (pocz + 2 < kon) {
        int pol = (pocz+kon)/ 2;
        ruch2( pocz, pol);
        ruch2( pol+1, kon);
        int lp = 0;
		int ll = 0;
		int pp = 0;
		int zm, zw;
        int ind = pocz;
        while (ind <= kon and mrowki[ind] == 'L') {
            ind+=1;
            lp+=1;
		}
        while (ind <= kon and mrowki[ind] == 'P') {
            ind+=1;
            pp+=1;
		}
        while (ind <= kon and mrowki[ind] == 'L') {
            ind+=1;
            ll+=1;
		}

        for (i=0; i <ll; i++)
            mrowki[pocz+i+lp] = 'L';
        for (i=0; i <pp; i++)
            mrowki[pocz+i+lp+ll] = 'P';
        zw = min(ll,pp);
        zm = max(ll,pp);
        int dod = 1;
        for (i=0; i <zw; i++) {
            zmiany[pocz+i+lp] += dod;
            zmiany[pocz+pp+ll+lp-i-1] += dod;
            dod+=2;
		}
        dod-=1;
        for (i=0; i <(zm-zw); i++)
            zmiany[pocz+lp+i+zw] += dod;
        return;
    }
	bool dalej = true;
    while (dalej) {
        dalej = false;
        i = pocz;
        while (i<kon) {
            if (mrowki[i] == 'P' &&
                mrowki[i+1] == 'L') {
                mrowki[i] = 'L';
                mrowki[i+1] = 'P';
                zmiany[i]+= 1;
                zmiany[i+1]+= 1;
                dalej = true;
			}
            i+=1;
		}
	}
}

int main() {
	int liczba;

	char el;
	cin >> liczba;
	
    for (int i=0; i < liczba; i++) {
		cin >> el;
        mrowki.push_back(el);
        zmiany.push_back(0);
	}
	ruch2(0, liczba-1);
    for (int i=0; i <liczba; i++)
        cout << zmiany[i] << " ";
	cout << "\n";

}