Submission #1287643

#TimeUsernameProblemLanguageResultExecution timeMemory
1287643BlockOGMiners (IOI07_miners)C++20
25 / 100
1 ms580 KiB
#include <bits/stdc++.h>

// mrrrow meeow :3
// go play vivid/stasis now! https://vividstasis.gay

#define fo(i, a, b) for (auto i = (a); i < (b); i++)
#define of(i, a, b) for (auto i = (b); i-- > (a);)
#define f first
#define s second
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define be(a) a.begin(), a.end()
using namespace std;

int ____init = [] {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    return 0;
}();

int calc_add(string &s, char ad) {
    int m = 0, f = 0, b = 0;

    if (ad == 'M') m = 1;
    else if (ad == 'F') f = 1;
    else b = 1;

    fo(i, 0, 2) {
        if (i < s.size()) {
            if (s[s.size() - 1 - i] == 'M') m = 1;
            else if (s[s.size() - 1 - i] == 'F') f = 1;
            else b = 1;
        }
    }

    return m + f + b;
}

int main() {
    string s; cin >> s >> s;

    string a, b;
    int res = 0;
    for (char c : s) {
        int add_a = calc_add(a, c);
        int add_b = calc_add(b, c);
        if (add_a > add_b) a += c, res += add_a;
        else b += c, res += add_b, swap(a, b);
    }

    cout << res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...