Submission #1141588

#TimeUsernameProblemLanguageResultExecution timeMemory
1141588omsincoconutFood Court (JOI21_foodcourt)C++20
21 / 100
299 ms31920 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll, ll> pll; const int MAXN = 250005, MAXT = 4*MAXN+5;\ const pll NULLPAIR = make_pair(0LL, 0LL); pll op1(pll a, pll b) { // The pairs are (-, +) if (a.second >= b.first) return make_pair(a.first, a.second-b.first+b.second); else return make_pair(a.first-a.second+b.first, b.second); } struct max0_segtree{ pll tree[MAXT]; pll lz[MAXT]; void init() { fill(tree, tree+MAXT, NULLPAIR); fill(lz, lz+MAXT, NULLPAIR); } void push(int v, int l, int r) { tree[v] = op1(tree[v], lz[v]); if (l < r) { lz[v<<1] = op1(lz[v<<1], lz[v]); lz[(v<<1)+1] = op1(lz[(v<<1)+1], lz[v]); } lz[v] = NULLPAIR; } void update(int l, int r, ll x, int tl = 1, int tr = MAXN, int v = 1) { push(v, tl, tr); if (tr < l || r < tl) return; if (l <= tl && tr <= r) { if (x >= 0) lz[v] = op1(lz[v], make_pair(0LL, x)); else lz[v] = op1(lz[v], make_pair(-x, 0LL)); return; } int mid = (tl+tr)>>1; update(l, r, x, tl, mid, v<<1); update(l, r, x, mid+1, tr, (v<<1)+1); } ll query(int p, int l = 1, int r = MAXN, int v = 1) { push(v, l, r); if (l == r) return tree[v].second; int mid = (l+r)>>1; if (p <= mid) return query(p, l, mid, v<<1); else return query(p, mid+1, r, (v<<1)+1); } } sub4; int N, M, Q; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); sub4.init(); cin >> N >> M >> Q; while (Q--) { int T; cin >> T; if (T == 1) { int L, R, C; ll K; cin >> L >> R >> C >> K; sub4.update(L, R, K); } else if (T == 2) { int L, R; ll K; cin >> L >> R >> K; sub4.update(L, R, -K); } else { int A; ll B; cin >> A >> B; cout << (sub4.query(A) >= B ? 1 : 0) << "\n"; } } 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...