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