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
#include <ios>
#include <numeric>
#include <complex>
#include <algorithm>
#include <cstring>
#include <vector>
#include <functional>
#include <cassert>
#define REP(i, n) for(int i=0; i<(n); ++i)
#define FOR(i, p, n) for (int i=(p); i<=(n); ++i)
#define RFOR(i, p, n) for (int i=(p); i>=(n); --i)
#define SREP(n) REP(_ ## n, n)
#define V std::vector
#define F std::function
#define pb push_back
#define eb emplace_back
#define sz(A) int(A.size())
#define all(A) A.begin(), A.end()
#define rall(A) A.rbegin(), A.rend()
#define C const
typedef long long ll;
typedef double ld;
typedef V <int> vi;
typedef V <bool> vb;
typedef V <ll> vll;
typedef V <vi> vvi;
typedef V <char> vc;
typedef C int ci;
typedef C ll cll;
int I(){
    int z;
    scanf("%d", &z);
    return z;
}
int main(){
    ci n=I(); scanf("\n");
    vi pref(n+1);
    auto dod=[&](ci p, ci k){
        if (p<=k)
            ++pref[p],--pref[k+1];
    };
    int p=0;
    REP(k, n)
        if (getchar_unlocked()!='P'){
            if (p<k){
                dod(p, k);
                dod(p+1, k-1);
            }
            ++p;
        }
    REP(i, n){
        pref[i+1]+=pref[i];
        printf("%d ", pref[i]);
    }
    printf("\n");
}