답안 #853234

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
853234 2023-09-23T16:54:52 Z serifefedartar 원숭이와 사과 나무 (IZhO12_apple) C++17
0 / 100
294 ms 148632 KB
#include <bits/stdc++.h>
using namespace std;
 
#define fast ios::sync_with_stdio(0);cin.tie(0);
#define s second
#define f first
typedef long long ll;
const ll MOD = 1e9 + 7;
const ll LOGN = 20;
const ll MAXN = 2e5 + 5;

struct Node {
	int l, r, sum, lazy;
	Node *ptrL, *ptrR;

	Node(int a, int b) : l(a), r(b), sum(0), lazy(0), ptrL(NULL), ptrR(NULL) { };
	void add() {
		if (ptrL == NULL && l != r) {
			int mid = (l + r) / 2;
			ptrL = new Node(l, mid);
			ptrR = new Node(mid+1, r);
		}
	}

	void push() {
		if (lazy) {
			sum = r - l + 1;
			if (l != r) {
				add();
				ptrL->lazy = 1;
				ptrR->lazy = 1;
			}
			lazy = 0;
		}
	}

	void update(int a, int b) {
		push();
		if (l > b || a > r)
			return ;
		if (a <= l && r <= b) {
			lazy = 1;
			push();
			return ;
		}
		add();
		ptrL->update(a, b);
		ptrR->update(a, b);
		sum = ptrL->sum + ptrR->sum; 
	}

	int query(int a, int b) {
		if (l > b || a > r)
			return 0;
		push();
		if (a <= l && r <= b)
			return sum;
		add();
		return ptrL->query(a, b) + ptrR->query(a, b);
	}
};

int main() {
	fast
	int M, D, X, Y;
	cin >> M;

	Node *root = new Node(1, 1e7);
	int C = 0;
	while (M--) {
		cin >> D >> X >> Y;
		X += C, Y += C;
		if (D == 1) {
			C = root->query(X, Y);
			cout << C << "\n";
		} else
			root->update(X, Y);
	}
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 560 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 12 ms 7768 KB Output is correct
5 Correct 15 ms 9304 KB Output is correct
6 Correct 15 ms 9048 KB Output is correct
7 Correct 15 ms 9304 KB Output is correct
8 Correct 138 ms 69456 KB Output is correct
9 Correct 278 ms 118716 KB Output is correct
10 Correct 276 ms 132828 KB Output is correct
11 Correct 283 ms 143696 KB Output is correct
12 Correct 294 ms 148632 KB Output is correct
13 Incorrect 26 ms 3152 KB Output isn't correct
14 Halted 0 ms 0 KB -