답안 #671668

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
671668 2022-12-13T12:46:58 Z tolbi 원숭이와 사과 나무 (IZhO12_apple) C++17
0 / 100
1 ms 468 KB
    #pragma optimize("Bismillahirrahmanirrahim")
    //█▀█─█──█──█▀█─█─█
    //█▄█─█──█──█▄█─█■█
    //█─█─█▄─█▄─█─█─█─█
    //Allahuekber
    //ahmet23 orz...
    //Sani buyuk Osman Pasa Plevneden cikmam diyor.
    //FatihSultanMehmedHan
    //YavuzSultanSelimHan
    //AbdulhamidHan
    #define author tolbi
    #include <bits/stdc++.h>
    #define endl '\n'
    #define vint(x) vector<int> x
    #define deci(x) int x;cin>>x;
    #define decstr(x) string x;cin>>x;
    #define cinarr(x) for (auto &it : x) cin>>it;
    #define coutarr(x) for (auto &it : x) cout<<it<<" ";cout<<endl;
    #define sortarr(x) sort(x.begin(),x.end())
    #define sortrarr(x) sort(x.rbegin(),x.rend())
    #define det(x) cout<<"NO\0YES"+x*3<<endl;
    #define INF LONG_LONG_MAX
    #define rev(x) reverse(x.begin(),x.end());
    #define ios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    #define tol(bi) (1LL<<((int)(bi)))
const int MOD = 1e9+7;
using namespace std;
mt19937 ayahya(chrono::high_resolution_clock().now().time_since_epoch().count());
struct Node{
	int val, lnode, rnode, l, r, lazy;
	Node():lnode(-1),rnode(-1),val(0),lazy(0){}
};
vector<Node> segtree;
void lyap(int node){
	int mid = segtree[node].l+(segtree[node].r-segtree[node].l)/2;
	if (segtree[node].lnode==-1){
		segtree[node].lnode=segtree.size();
		segtree.push_back(Node());
		segtree[segtree[node].lnode].l=segtree[node].l;
		segtree[segtree[node].lnode].r=mid;
	}
}
void ryap(int node){
	int mid = segtree[node].l+(segtree[node].r-segtree[node].l)/2;
	if (segtree[node].rnode==-1){
		segtree[node].rnode=segtree.size();
		segtree.push_back(Node());
		segtree[segtree[node].rnode].l=mid+1;
		segtree[segtree[node].rnode].r=segtree[node].r;
	}
}
void dallan(int node){
	if (segtree[node].lazy==1){
		lyap(node);
		ryap(node);
		segtree[segtree[node].lnode].lazy=1;
		segtree[segtree[node].rnode].lazy=1;
		segtree[node].val=segtree[node].r-segtree[node].l+1;
	}
	segtree[node].lazy=0;
}
int query(int l, int r, int node = 0){
	dallan(node);
	if (segtree[node].l>=l && segtree[node].r<=r) return segtree[node].val;
	if (segtree[node].l>r || segtree[node].r<l) return 0ll;
	int rval = 0;
	if (segtree[node].lnode!=-1){
		rval+=query(l, r, segtree[node].lnode);
	}
	if (segtree[node].rnode!=-1){
		rval+=query(l, r, segtree[node].rnode);
	}
	return rval;
}
void update(int l, int r, int node = 0) {
	dallan(node);
	if (segtree[node].l>=l && segtree[node].r<=r){
		segtree[node].lazy=1;
		dallan(node);
		return;
	}
	if (segtree[node].l>r || segtree[node].r<l) return;
	int mid = segtree[node].l+(segtree[node].r-segtree[node].l)/2;
	if (mid>=l){
		lyap(node);
		update(l, r, segtree[node].lnode);
	}
	if (mid+1<=r){
		ryap(node);
		update(l, r, segtree[node].rnode);
	}
	segtree[node].val=0ll;
	if (segtree[node].lnode!=-1){
		dallan(segtree[node].lnode);
		segtree[node].val+=segtree[segtree[node].lnode].val;
	}
	if (segtree[node].rnode!=-1){
		dallan(segtree[node].rnode);
		segtree[node].val+=segtree[segtree[node].rnode].val;
	}
}
int32_t main(){
	ios;
	int t=1;
	int tno = 0;
	if (!t) cin>>t;
	while (t-(tno++)){
		segtree.push_back(Node());
		segtree[0].l=1;
		segtree[0].r=1000000000;
		segtree[0].val=0;
		segtree[0].lazy=0;
		deci(q);
		int c = 0;
		while (q--){
			assert(segtree.size()>1000000);
			deci(d);
			deci(l);deci(r);
			l+=c;
			r+=c;
			if (d==1){
				c=query(l,r);
				cout<<c<<endl;
			}
			else {
				update(l,r);
			}
		}
	}
}

Compilation message

apple.cpp:1: warning: ignoring '#pragma optimize ' [-Wunknown-pragmas]
    1 |     #pragma optimize("Bismillahirrahmanirrahim")
      | 
apple.cpp: In constructor 'Node::Node()':
apple.cpp:30:18: warning: 'Node::rnode' will be initialized after [-Wreorder]
   30 |  int val, lnode, rnode, l, r, lazy;
      |                  ^~~~~
apple.cpp:30:6: warning:   'int Node::val' [-Wreorder]
   30 |  int val, lnode, rnode, l, r, lazy;
      |      ^~~
apple.cpp:31:2: warning:   when initialized here [-Wreorder]
   31 |  Node():lnode(-1),rnode(-1),val(0),lazy(0){}
      |  ^~~~
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 468 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -