#include <iostream>
#include <vector>
using namespace std;
inline void solve()
{
int n;
cin>>n;
string s;
cin>>s;
int q;
cin>>q;
while (q--)
{
int l,r;
cin>>l>>r;
l--;r--;
vector<pair<int,int>>tl;
for (int i=l;i<=r;i++)
{
int j=i;
while (j<=r&&s[i]==s[j])
j++;
if (s[i]=='C')
tl.push_back({j-i,1});
else
tl.push_back({j-i,-1});
i=j-1;
}
vector<int>ans(tl.size(),0);
{
int cur=0;
for (int i=0;i<tl.size();i++)
{
if (cur+tl[i].first*tl[i].second>=0)
cur=cur+tl[i].first*tl[i].second;
else
{
int f=cur+tl[i].first*tl[i].second;
ans[i]=abs(f);
cur=0;
}
}
}
{
int cur=0;
for (int i=tl.size()-1;i>=0;i--)
{
if (cur+tl[i].first*tl[i].second>=0)
cur=cur+tl[i].first*tl[i].second;
else
{
int f=cur+tl[i].first*tl[i].second;
ans[i]=max(ans[i],abs(f));
cur=0;
}
}
}
int tot=0;
for (auto i:ans)
tot+=i;
cout<<tot<<endl;
}
}
int main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int t=1;
for (int i=1;i<=t;i++)
{
solve();
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |