#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll n, k = 0;
vector <ll> vec, pref_2, one;
ll sz;
ll bs (ll a) {
ll l = 0, r = sz - 1, res = sz;
while (l <= r) {
ll mid = (l + r) / 2;
ll temp = one[mid] - min(k, pref_2[mid]);
//cout << mid << " " << temp << endl;
if (temp >= a) {
r = mid - 1;
res = mid;
}// 1 3 4
else {
l = mid + 1;
}
}
return sz - res;
}
int main () {
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin >> n;
for (ll i = 0; i < n; i++) {
ll a;
cin >> a;
vec.push_back(a);
}
ll temp = 0;
for (ll i = 0; i < n; i++) {
if (vec[i] == 2) {
temp++;
}
pref_2.push_back(temp);
if (vec[i] == 1) {
one.push_back(i);
}
}
sz = one.size();
//cout << sz << endl;
ll q;
cin >> q;
while (q--) {
ll skibidi_dopdop;
cin >> skibidi_dopdop;
if (skibidi_dopdop == 1) {
k++;
}
else {
ll a, b;
cin >> a >> b;
a--;b--;
ll temp = bs(a);
temp -= bs(b + 1);
cout << ((b - a + 1) - temp) * 2 + temp << endl;
}
}
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... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |