Submission #1295536

#TimeUsernameProblemLanguageResultExecution timeMemory
1295536kaloyanElection (BOI18_election)C++20
28 / 100
3094 ms812 KiB
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>

const int MAXN = 500000 + 10;

int n, m;
std::string s;
char a[MAXN];
bool del[MAXN];

void solve()
{
    std::cin >> n >> s;

    for(int i = 1 ; i <= n ; ++i)
    {
        a[i] = s[i - 1];
    }
    
    int cap, tony;

    std::cin >> m;
    for(int i = 1 ; i <= m ; ++i)
    {
        int l, r;
        std::cin >> l >> r;

        cap = 0, tony = 0;
        for(int i = l ; i <= r ; ++i)
        {
            if(a[i] == 'C') cap += 1;
            else tony += 1;

            if(tony > cap)
            {
                del[i] = 1;
                tony -= 1;
            }
        }

        cap = 0, tony = 0;
        for(int i = r ; i >= l ; --i)
        {
            if(a[i] == 'C') cap += 1;
            else tony += (!del[i]);

            if(tony > cap)
            {
                del[i] = 1;
                tony -= 1;
            }
        }

        int ans = 0;
        for(int i = l ; i <= r ; ++i)
        {
            if(del[i])
            {
                ans += 1;
                del[i] = 0;
            }
        }

        std::cout << ans << "\n";
    }
}

void fastIO()
{
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(NULL);
    std::cout.tie(NULL);
}

int main()
{
    fastIO();
    solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...