#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 = -1;
while (l <= r) {
ll mid = (l + r) / 2;
ll temp = one[mid] - min(k, pref_2[mid]);
if (temp <= a) {
l = mid + 1;
res = mid;
}
else {
r = mid - 1;
}
}
return res + 1;
}
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();
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--;
if (a - 1 < 0) {
ll temp = bs(b);
cout << ((b - a + 1) - temp) * 2 + temp << "\n";
}
else {
ll temp = bs(b);
temp -= bs(a - 1);
cout << ((b - a + 1) - temp) * 2 + temp << "\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... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |