Submission #725709

#TimeUsernameProblemLanguageResultExecution timeMemory
725709Abrar_Al_SamitFood Court (JOI21_foodcourt)C++17
21 / 100
278 ms14816 KiB
#include<bits/stdc++.h>
using namespace std;

const int nax = 250003;

int n, m, q;
pair<long long, long long>st[nax * 4];

void unlazy(int v) {
	for(int c : {v*2, v*2+1}) {
		long long val = st[v].second;

		long long cut = min(val, st[c].first);
		st[c].first -= cut, val -= cut;
		st[c].second += val;

		st[c].first += st[v].first;
	}
	st[v] = {0LL, 0LL};
}
void add(int l, int r, int L, int R, long long del, int v) {
	if(l>R || r<L) return;
	if(l>=L && r<=R) {
		st[v].first += del;
		return;
	}
	unlazy(v);
	int mid = (l+r)/2;
	add(l, mid, L, R, del, v*2);
	add(mid+1, r, L, R, del, v*2+1);
}
void sub(int l, int r, int L, int R, long long del, int v) {
	if(l>R || r<L) return;
	if(l>=L && r<=R) {
		long long cut = min(st[v].first, del);
		st[v].first -= cut, del -= cut;
		st[v].second += del;
		return;
	}
	unlazy(v);
	int mid = (l+r)/2;
	sub(l, mid, L, R, del, v*2);
	sub(mid+1, r, L, R, del, v*2+1);	
}
long long query(int l, int r, int p, int v) {
	if(l==r) {
		return st[v].first;
	}
	unlazy(v);
	int mid = (l+r)/2;
	if(p<=mid) return query(l, mid, p, v*2);
	else return query(mid+1, r, p, v*2+1);
}
void PlayGround() {
	cin>>n>>m>>q;

	while(q--) {
		int tp;
		cin>>tp;
		if(tp==1) {
			long long l, r, c, k;
			cin>>l>>r>>c>>k;

			add(1, n, l, r, k, 1);
		} else if(tp==2) {
			long long l, r, k;
			cin>>l>>r>>k;

			sub(1, n, l, r, k, 1);
		} else {
			long long a, b;
			cin>>a>>b;

			long long cur = query(1, n, a, 1);
			if(cur>=b) cout<<"1\n";
			else cout<<"0\n";
		}
	}

	// cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
}
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	PlayGround();
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...