답안 #890261

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
890261 2023-12-20T21:17:45 Z Justin1 원숭이와 사과 나무 (IZhO12_apple) C++14
0 / 100
348 ms 262144 KB
#include <bits/stdc++.h>
#define f first
#define s second
// #define int long long
using namespace std;
 
class dynamicSeg { //range max query, range set update
	int lzy, val;
	int l, r;
	dynamicSeg *L = NULL, *R = NULL;
	void extend(dynamicSeg *&node, int l, int r) {
		if (node == NULL) node = new dynamicSeg(l, r);
	}
	void push() {
		if (!lzy) return;
		int mid = (this->l + this->r) / 2;
		extend(L, this->l, mid), extend(R, mid + 1, this->r);
		L-> val = L->r - L->l + 1;
		R-> val = R->r - R->l + 1;
		L-> lzy = R->lzy = !(lzy = 0);
	}
public:
	dynamicSeg (int sz) : l(1), r(sz) {}
	dynamicSeg (int l, int r) : l(l), r(r) {}
	void upd(int l, int r) {
		push();
		if (this->r < l || r < this->l) return;
		if (l <= this->l && this->r <= r) {
			val = this->r - this->l + 1;
			lzy = 1;
			return;
		}
		int mid = (this->l + this->r) / 2;
		extend(L, this->l, mid), extend(R, mid + 1, this->r);
		L->upd(l, r), R->upd(l, r);
		val = L->val + R->val;
	}
	int qry(int l, int r) {
		push();
		if (this->r < l || r < this->l) return 0;
		if (l <= this->l && this->r <= r) return val;
		int mid = (this->l + this->r) / 2;
		extend(L, this->l, mid), extend(R, mid + 1, this->r);
		return L->qry(l, r) + R->qry(l, r);
	}
};
 
int n, m, k, x, y, z;
dynamicSeg seg(1'000'000'000);
 
void solve() {
	int C = 0;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> x >> y >> z;
		if (x == 1) cout << (C = seg.qry(y + C, z + C)) << "\n"; 
		else seg.upd(y + C, z + C);
	}
}
 
signed main() {
    cin.tie(0), cout.tie(0) -> sync_with_stdio(0);
    cout << fixed << setprecision(10);
    int T = 1;
    // cin >> T;
    while (T--) {
        solve();
    }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 13 ms 9308 KB Output is correct
5 Correct 17 ms 11516 KB Output is correct
6 Correct 18 ms 11100 KB Output is correct
7 Correct 17 ms 11356 KB Output is correct
8 Correct 145 ms 87056 KB Output is correct
9 Correct 299 ms 150548 KB Output is correct
10 Correct 339 ms 166996 KB Output is correct
11 Correct 316 ms 179028 KB Output is correct
12 Correct 335 ms 184864 KB Output is correct
13 Correct 288 ms 215180 KB Output is correct
14 Correct 348 ms 217172 KB Output is correct
15 Runtime error 340 ms 262144 KB Execution killed with signal 9
16 Halted 0 ms 0 KB -