12932022-03-30 16:05:09k_balintNemzetközi Rántott Hús Fesztiválcpp14Accepted 100/100120ms38180 KiB
#include <bits/stdc++.h>
using namespace std;

int n;
string s;
int suf[1000006];
int ans[1000006];
int best[1000006];
stack<int> st;

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

    cin>>n>>s;

    for(int i=n-1;i>=0;i--){
        if(s[i]=='H'){
            best[i]=i;
            st.push(i);
        }
        else{
            if(!st.empty()) st.pop();
            best[i]=st.empty()?n:st.top();
        }
    }

    int h=0,m=0,mh=0;
    for(int i=n-1;i>=0;i--){
        suf[i]=suf[i+1];
        if(s[i]=='H') ++h;
        else if(s[i]=='K'){
            if(h){
                --h; suf[i]++;
            }
            else if(mh){
                ++m; --mh;
            }
            else if(m){
                --m; suf[i]++;
            }
        }
        else{
            if(h){
                --h; ++mh;
                suf[i]++;
            }
            else{
                ++m;
            }
        }
        ans[i]=suf[i]+m/2;
    }

    for(int i=0;i<n;i++){
        if(best[i] != n){
            cout << (best[i]-i)/2 << ' ';
        }

        else{
            cout << ans[i] << ' ';
        }
    }
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted2ms1832 KiB
2Accepted2ms1980 KiB
subtask27/7
3Accepted1ms1880 KiB
4Accepted1ms1908 KiB
subtask39/9
5Accepted2ms2092 KiB
6Accepted2ms2012 KiB
7Accepted2ms2012 KiB
subtask414/14
8Accepted101ms28540 KiB
9Accepted108ms29584 KiB
10Accepted104ms30564 KiB
11Accepted108ms31532 KiB
12Accepted97ms31448 KiB
13Accepted97ms32412 KiB
14Accepted104ms32296 KiB
15Accepted101ms32752 KiB
subtask511/11
16Accepted1ms7116 KiB
17Accepted1ms7124 KiB
18Accepted1ms7124 KiB
subtask629/29
19Accepted2ms7316 KiB
20Accepted2ms7324 KiB
21Accepted2ms7328 KiB
22Accepted1ms7336 KiB
subtask730/30
23Accepted120ms33772 KiB
24Accepted119ms33172 KiB
25Accepted114ms33560 KiB
26Accepted114ms33188 KiB
27Accepted119ms33016 KiB
28Accepted119ms33720 KiB
29Accepted109ms34696 KiB
30Accepted114ms34612 KiB
31Accepted115ms34884 KiB
32Accepted116ms33416 KiB
33Accepted104ms34400 KiB
34Accepted108ms33912 KiB
35Accepted104ms34008 KiB
36Accepted103ms34268 KiB
37Accepted98ms35232 KiB
38Accepted101ms36220 KiB
39Accepted107ms37208 KiB
40Accepted108ms38180 KiB