#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
struct BIT {
int n;
vector<int> T;
BIT(int sz) : n(sz), T(n + 1) {}
void inc(int i, int v) {
++i;
for (; i <= n; i += i & -i) {
T[i] += v;
}
}
void incr(int a, int b) {
if (a > b) return;
inc(a, 1);
inc(b + 1, -1);
}
int val(int i) {
++i;
int res = 0;
for (; i > 0; i -= i & -i) {
res += T[i];
}
return res;
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m; cin >> n >> m;
vector<int> a(n);
for (int& i : a) cin >> i;
sort(a.begin(), a.end());
BIT bit(n);
bit.inc(0, a[0]);
for (int i = 1; i < n; ++i) {
bit.inc(i, a[i] - a[i - 1]);
}
auto first = [&bit](int k) {
int lo = 0, hi = bit.n;
while (lo < hi) {
int m = (lo + hi) / 2;
if (bit.val(m) >= k) {
hi = m;
} else {
lo = m + 1;
}
}
return lo;
};
while (m--) {
char tp; cin >> tp;
if (tp == 'F') {
int c, h; cin >> c >> h;
int st = first(h);
int en = st + c - 1;
if (en >= n) {
bit.incr(st, n - 1);
} else {
int a = max(first(bit.val(en)), st);
int b = first(bit.val(en) + 1) - 1;
bit.incr(st, a - 1);
int cnt = en - a + 1;
bit.incr(b - cnt + 1, b);
}
} else {
int mi, ma; cin >> mi >> ma;
cout << (first(ma + 1) - 1) - (first(mi) - 1) << '\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... |
# | 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... |