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
#include <iostream>
#include <vector>
#include <string>

int main()
{
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(NULL);

    long long result = 0;
    long long counterP = 0, counterL = 0;

    int n;

    std::cin >> n;

    std::string input;
    std::cin >> input;

    std::vector<int> pFromLeft(n, 0);
    std::vector<int> lFromRight(n, 0);

    for (int i = 0; i < input.size(); i++)
    {
        pFromLeft[i] = counterP;

        if (input[i] == 'P')
        {
            counterP++;
        }
    }
    for (int i = input.size() - 1; i >= 0; i--)
    {
        lFromRight[i] = counterL;

        if (input[i] == 'L')
        {
            counterL++;
        }
    }
    for (int i = 0; i < input.size(); i++)
    {
        if (input[i] == 'L')
        {
            if (pFromLeft[i] > lFromRight[i])
            {
                result = lFromRight[i] * 2 + 1;
            }
            else {
                result = pFromLeft[i] * 2;
            }
        }
        else {
            if (lFromRight[i] > pFromLeft[i])
            {
                result = pFromLeft[i] * 2 + 1;
            }
            else {
                result = lFromRight[i] * 2;
            }
        }

        std::cout << result << " ";
    }

    std::cout << std::endl;
}