#include <iostream>
#include <vector>
#include <algorithm>
#include <cassert>
using ll = long long;
#define debug(x) #x << " = " << x << '\n'
struct Query {
int type, l, r, c, k;
};
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
int n, m, q;
std::cin >> n >> m >> q;
std::vector<Query> Q(q);
for (auto &[type, l, r, c, k] : Q) {
std::cin >> type;
if (type == 1) {
std::cin >> l >> r >> c >> k;
} else if (type == 2) {
std::cin >> l >> r >> k;
} else {
std::cin >> l >> r;
}
}
Q.insert(Q.begin(), Query{});
auto query1 = [&](int p, int t) {
int ret = 0;
for (int i = 1; i <= t; i++) {
if (Q[i].l <= p && p <= Q[i].r) {
if (Q[i].type == 1) {
ret += Q[i].k;
} else if (Q[i].type == 2) {
ret = std::max(0, ret - Q[i].k);
}
}
}
return ret;
};
auto query2 = [&](int p, int l, int r) {
int cur = 0;
for (int i = l; i <= r; i++) {
if (Q[i].type == 2 && Q[i].l <= p && p <= Q[i].r) {
cur -= Q[i].k;
}
}
return cur;
};
for (int i = 1; i <= q; i++) {
if (Q[i].type == 3) {
int A = Q[i].l, B = Q[i].r;
if (query1(A, i) < B) {
std::cout << "0\n";
continue;
}
int l = 0, r = i - 1;
// for (int j = 1; j <= i; j++) {
// std::cout << query1(A, j) + query2(A, j + 1, i) << ' ';
// }
// std::cout << '\n';
while (l < r) {
int mid = (l + r) / 2;
if (query1(A, mid) + query2(A, mid + 1, i) >= B) {
r = mid;
} else {
l = mid + 1;
}
}
// std::cout << "\n\n ! ";
// std::cout << query1(1, 2) << ' ';
// std::cout << query2(1, 3, 5) << ' ';
std::cout << Q[r].c << '\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... |