Submission #1221435

#TimeUsernameProblemLanguageResultExecution timeMemory
122143512345678Toilets (JOI16_toilets)C++20
36 / 100
4 ms2772 KiB
#include <bits/stdc++.h>

using namespace std;

#define ll long long

const ll nx=2e5+5;

ll n, m, t, sf[nx], skip, cur, ans;
string s;
queue<int> q;

int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n>>m>>s>>t;
    n=2*n;
    for (int i=n-1; i>=0; i--) 
    {
        sf[i]=(sf[i+1]+(s[i]=='M'));
        if (s[i]=='F') q.push(i);
    }
    if (sf[0]>n/2) return cout<<-1, 0;
    for (int i=n-1; i>=0; i--)
    {
        if (s[i]=='M')
        {
            if (cur-1<-1)
            {
                ans=max(ans, sf[q.front()]-skip);
            }
            else cur--, skip++;
        }
        else
        {
            if (q.front()==i) q.pop(), cur++;
        }
    }
    cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...