100672024-03-26 09:21:17szilNemzetközi Rántott Hús Fesztiválcpp17Elfogadva 100/100109ms14408 KiB
#include <bits/stdc++.h>

using ll = long long;
using namespace std;

const int MAXN = 1'000'001;

struct State {
    int res = 0, extra = 0, upgraded = 0;
};

State operator+(State a, State b) {
    return {a.res + b.res, a.extra + b.extra, a.upgraded + b.upgraded};
}

char s[MAXN];
int ans[MAXN];

void solve() {
    int n; cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> s[i];
    }
    
    stack<State> blocked;
    State curr;
    for (int i = n; i >= 1; i--) {
        if (s[i] == 'H') {
            blocked.push(curr);
            curr = State();
        } else  {
            bool used = true;
            if (blocked.empty()) {
                if (curr.upgraded) {
                    curr.upgraded--;
                    curr.res++;
                } else if (curr.extra) {
                    curr.extra--;
                    curr.upgraded++;
                } else {
                    used = false;
                }
                
            } else {
                curr = curr + blocked.top(); 
                curr.res++;
                blocked.pop();
            }
            if (s[i] == 'M') {
                if (used) curr.extra++;
                else curr.upgraded++;
            }
        }

        ans[i] = curr.res;
    }

    for (int i = 1; i <= n; i++) {
        cout << ans[i] << " ";
    }
    cout << "\n";
}

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    int t = 1;
    // cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1836 KiB
2Elfogadva3ms2188 KiB
subtask27/7
3Elfogadva2ms2112 KiB
4Elfogadva3ms2244 KiB
subtask39/9
5Elfogadva3ms2484 KiB
6Elfogadva3ms2476 KiB
7Elfogadva3ms2744 KiB
subtask414/14
8Elfogadva108ms12608 KiB
9Elfogadva109ms12748 KiB
10Elfogadva108ms12884 KiB
11Elfogadva109ms13104 KiB
12Elfogadva100ms13228 KiB
13Elfogadva105ms13448 KiB
14Elfogadva101ms13640 KiB
15Elfogadva100ms13696 KiB
subtask511/11
16Elfogadva3ms3884 KiB
17Elfogadva3ms4008 KiB
18Elfogadva3ms4084 KiB
subtask629/29
19Elfogadva3ms4108 KiB
20Elfogadva3ms4160 KiB
21Elfogadva3ms4152 KiB
22Elfogadva3ms4112 KiB
subtask730/30
23Elfogadva108ms13944 KiB
24Elfogadva108ms13888 KiB
25Elfogadva108ms13992 KiB
26Elfogadva108ms13916 KiB
27Elfogadva107ms13932 KiB
28Elfogadva107ms13916 KiB
29Elfogadva105ms13844 KiB
30Elfogadva107ms13844 KiB
31Elfogadva107ms13836 KiB
32Elfogadva105ms14052 KiB
33Elfogadva104ms14036 KiB
34Elfogadva105ms14060 KiB
35Elfogadva104ms14160 KiB
36Elfogadva101ms14300 KiB
37Elfogadva104ms14408 KiB
38Elfogadva100ms14212 KiB
39Elfogadva100ms14228 KiB
40Elfogadva104ms14268 KiB