#include <iostream>
#include <vector>
#include <algorithm>
#define f first
#define s second
#define int long long
using namespace std;
int n, m, q;
vector<pair<pair<int,int>,int>> query[250010], op[250010];
vector<int> ans;
struct {
struct {
pair<int,int> minn;
int lz;
} node[1000010];
void build(int id, int x, int y) {
if (x == y) {
node[id].minn = {0,x};
return;
}
int mid = (x+y)/2;
build(id*2,x,mid);
build(id*2+1,mid+1,y);
node[id].minn = min(node[id*2].minn,node[id*2+1].minn);
}
void split(int id) {
node[id*2].minn.f += node[id].lz;
node[id*2+1].minn.f += node[id].lz;
node[id*2].lz += node[id].lz;
node[id*2+1].lz += node[id].lz;
node[id].lz = 0;
}
void update(int id, int x, int y, int pos, int val) {
if (pos <= x) {
node[id].minn.f += val;
node[id].lz += val;
return;
}
if (y < pos) return;
int mid = (x+y)/2;
split(id);
update(id*2,x,mid,pos,val);
update(id*2+1,mid+1,y,pos,val);
node[id].minn = min(node[id*2].minn,node[id*2+1].minn);
}
pair<int,int> find(int id, int x, int y, int l, int r) {
if ((l <= x) && (y <= r)) return node[id].minn;
if ((y < l) || (r < x)) return {1e18,1e18};
int mid = (x+y)/2;
split(id);
return min(find(id*2,x,mid,l,r),find(id*2+1,mid+1,y,l,r));
}
} seg;
signed main() {
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n >> m >> q;
for (int i = 1; i <= q; i++) {
int type, l, r, c, k;
cin >> type;
if (type == 1) {
cin >> l >> r >> c >> k;
op[l].push_back({{k,c},i});
op[r+1].push_back({{-k,c},i});
} else if (type == 2) {
cin >> l >> r >> k;
op[l].push_back({{-k,0},i});
op[r+1].push_back({{k,0},i});
} else {
cin >> l >> k;
query[l].push_back({{k,i},ans.size()});
ans.push_back(1);
}
}
seg.build(1,1,q);
for (int i = 1; i <= n; i++) {
for (int j = 0; j < op[i].size(); j++) {
seg.update(1,1,q,op[i][j].s,op[i][j].f.f);
}
for (int j = 0; j < query[i].size(); j++) {
int pos = query[i][j].f.s;
pair<int,int> tmp = seg.find(1,1,q,1,pos);
if (seg.find(1,1,q,pos,pos).f-tmp.f < query[i][j].f.f) ans[query[i][j].s] = 0;
}
}
for (int i = 0; i < ans.size(); i++) cout << ans[i] << "\n";
}
# | 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... |