#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define ll long long
#define ld long double
using namespace std;
using namespace __gnu_pbds;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
const int NMAX = 5e5;
int n, q;
int a[NMAX + 1];
char nulled[NMAX + 1];
int Query(int left, int right) {
for(int i = left; i <= right; i++) {
nulled[i] = 0;
}
int sum = 0;
int answer = 0;
for(int i = left; i <= right; i++) {
sum += (nulled[i] ? 0 : a[i]);
if(sum < 0) {
answer++;
nulled[i] = 1;
sum = 0;
}
}
sum = 0;
for(int i = right; i >= left; i--) {
sum += (nulled[i] ? 0 : a[i]);
if(sum < 0) {
answer++;
nulled[i] = 1;
sum = 0;
}
}
return answer;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n;
for(int i = 1; i <= n; i++) {
char s;
cin >> s;
a[i] = (s == 'C' ? 1 : -1);
}
cin >> q;
while(q--) {
int left, right;
cin >> left >> right;
cout << Query(left, right) << '\n';
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |