#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";
}
        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"; }  | 
            
        
                    English