답안 #1030544

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1030544 2024-07-22T06:38:30 Z Gray 원숭이와 사과 나무 (IZhO12_apple) C++17
0 / 100
324 ms 262144 KB
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <functional>
#include <ios>
#include <iostream>
#include <map>
#include <ratio>
#include <set>
#include <string>
#include <vector>
#define ll long long
#define ull unsigned long long int
#define ld double
#define ln "\n"
#define ff first
#define ss second
using namespace std;

const ll inf=2e18;

void setio(string io=""){
	#ifndef LOCAL
	if (io.length()){
		freopen((io+".in").c_str(), "r", stdin);
		freopen((io+".out").c_str(), "w", stdout);
		return;
	}
	#endif
	ios_base::sync_with_stdio(0); cin.tie(nullptr);
}

struct Node{
	Node *left, *right;
	ll val, lazy;
	Node(){
		left=right=nullptr;
		val=0; lazy=-1;
	}
	void preprocess(ll tl, ll tr){
		if (lazy!=-1){
			val=tr-tl+1;
			lazy=-1;
			if (!left) left=new Node;
			left->lazy=1;
			if (!right) right=new Node;
			right->lazy=1;
		}
	}
	void update(ll tl, ll tr, ll l, ll r){
		preprocess(tl, tr);
		if (tl==l and tr==r){
			lazy=1;
			preprocess(tl, tr);			
		}else if (l>r) return;
		else{
			ll tm = (tl+tr)/2;
			if (!left) left=new Node;
			left->update(tl, tm, l, min(r, tm));
			if (!right) right=new Node;
			right->update(tm+1, tr, max(tm+1, l), r);
			val=left->val+right->val;
		}
	}
	ll query(ll l, ll r, ll tl, ll tr){
		preprocess(tl, tr);
		if (l==tl and r==tr){
			return val;
		}else if (l>r) return 0;
		else{
			ll tm = (tl+tr)/2;
			ll ans=0;
			if (left) ans+=left->query(l, min(r, tm), tl, tm);
			if (right) ans+=right->query(max(l, tm+1), r, tm+1, tr);
			return ans;
		}
	}
};

void solve(){
	Node tr;
	ll l=1, r=1e9;
	ll q; cin >> q;
	ll c=0;
	while (q--){
		ll t, x, y; cin >> t >> x >> y;
		if (t==1){
			c = tr.query(x+c, y+c, l, r);
			cout << c << ln;
		}else{
			tr.update(l, r, x+c, y+c);
		}
	}
}

int main(){
	setio();
	ll t=1;
	// cin >> t;
	while (t--) solve();
}
 

Compilation message

apple.cpp: In function 'void setio(std::string)':
apple.cpp:25:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   25 |   freopen((io+".in").c_str(), "r", stdin);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
apple.cpp:26:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   26 |   freopen((io+".out").c_str(), "w", stdout);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 12 ms 9516 KB Output is correct
5 Correct 15 ms 11612 KB Output is correct
6 Correct 15 ms 11100 KB Output is correct
7 Correct 15 ms 11612 KB Output is correct
8 Correct 126 ms 87892 KB Output is correct
9 Correct 239 ms 152148 KB Output is correct
10 Correct 282 ms 168272 KB Output is correct
11 Correct 269 ms 180888 KB Output is correct
12 Correct 324 ms 186692 KB Output is correct
13 Correct 246 ms 217212 KB Output is correct
14 Correct 253 ms 219332 KB Output is correct
15 Runtime error 270 ms 262144 KB Execution killed with signal 9
16 Halted 0 ms 0 KB -