답안 #737605

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
737605 2023-05-07T12:24:52 Z happypotato 원숭이와 사과 나무 (IZhO12_apple) C++17
0 / 100
459 ms 262144 KB
#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define pii pair<int, int>
#define pll pair<ll int, ll int>
#define ff first
#define ss second
#define pb push_back
#pragma GCC optimize("O2")
using namespace std;
// debug template
#ifdef POTATO
#include "debug.h"
#define debug(...) cerr << "[" << #__VA_ARGS__ << "] = ["; _print(__VA_ARGS__)
#else
#define debug(...)
#endif
// convenient functions
inline void yes() { cout << "YES" << endl; return; }
inline void no() { cout << "NO" << endl; return; }
template <class T>
inline void out(T temp) { cout << temp << endl; return; }
// globals
#define int long long
struct node {
	int ans, l, r;
	bool all;
	node *left, *right;
	node(int l_, int r_): ans(0), l(l_), r(r_), all(false), left(nullptr), right(nullptr) {};
};
const int MAX = 1e9;
node *seg = new node(1, MAX);
#define mid ((cur->l + cur->r) >> 1)
void pushdown(node *cur) {
	// int mid = (cur->l + cur->r) >> 1;
	if (cur->left == nullptr) cur->left = new node(cur->l, mid);
	if (cur->right == nullptr) cur->right = new node(mid + 1, cur->r);
	if (cur->all) {
		cur->left->ans = mid - cur->l + 1;
		cur->left->all = true;
		cur->right->ans = cur->r - mid;
		cur->right->all = true;
	}
}
void update(int tl, int tr, node *cur = seg) {
	if (tl <= cur->l && cur->r <= tr) {
		cur->ans = (cur->r - cur->l + 1);
		cur->all = true;
		return;
	}
	pushdown(cur);
	// int mid = (cur->l + cur->r) >> 1;
	if (tl <= mid) update(tl, tr, cur->left);
	if (tr > mid) update(tl, tr, cur->right);
	cur->ans = cur->left->ans + cur->right->ans;
}
int query(int tl, int tr, node *cur = seg) {
	if (tl <= cur->l && cur->r <= tr) {
		return cur->ans;
	}
	pushdown(cur);
	// int mid = (cur->l + cur->r) >> 1;
	if (tr <= mid) return query(tl, tr, cur->left);
	if (tl > mid) return query(tl, tr, cur->right);
	return query(tl, tr, cur->left) + query(tl, tr, cur->right);
}
void init() {
	// initialize
	
}
void solve(int &case_no) {
	// solve
	int q;
	cin >> q;
	int C = 0;
	int cmd, l, r;
	while (q--) {
		cin >> cmd >> l >> r;
		if (cmd == 1) {
			C = query(l + C, r + C);
			cout << C << endl;
		} else if (cmd == 2) {
			update(l + C, r + C);
		}
	}
}
int32_t main() {
	#ifdef POTATO
	assert(freopen("input.txt", "r", stdin));
	// assert(freopen("output.txt", "w", stdout));
	#endif
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	srand(time(NULL));
	#ifdef POTATO
		auto start = chrono::high_resolution_clock::now();
	#endif

	init();
	int t = 1;
	// cin >> t;
	for (int i = 1; i <= t; i++) solve(i);

	#ifdef POTATO
		auto end = chrono::high_resolution_clock::now();
		cerr << "Execution time: "
			<< chrono::duration_cast<chrono::milliseconds>(end - start).count()
			<< " ms" << endl;
	#endif
}
/*

*/
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 19 ms 6404 KB Output is correct
5 Correct 22 ms 7632 KB Output is correct
6 Correct 22 ms 7392 KB Output is correct
7 Correct 21 ms 7708 KB Output is correct
8 Correct 168 ms 58188 KB Output is correct
9 Correct 355 ms 100584 KB Output is correct
10 Correct 350 ms 111276 KB Output is correct
11 Correct 328 ms 119552 KB Output is correct
12 Correct 352 ms 123496 KB Output is correct
13 Correct 332 ms 143588 KB Output is correct
14 Correct 304 ms 144968 KB Output is correct
15 Runtime error 459 ms 262144 KB Execution killed with signal 9
16 Halted 0 ms 0 KB -