답안 #671648

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
671648 2022-12-13T12:09:09 Z tolbi 원숭이와 사과 나무 (IZhO12_apple) C++17
0 / 100
459 ms 197608 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 int long long
#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 SegTree{
	struct Node{
		int val, lnode, rnode, l, r, lazy;
		Node():lnode(-1),rnode(-1),val(0),lazy(0){}
	};
	vector<Node> segtree;
	SegTree(){
		segtree.push_back(Node());
		segtree[0].l=1;
		segtree[0].r=10000000;
		segtree[0].val=0;
		segtree[0].lazy=0;
	}
	void dallan(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;
		}
		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;
		}
		if (segtree[node].lazy==1){
			segtree[node].val=segtree[node].r-segtree[node].l+1;
			segtree[segtree[node].lnode].lazy=1;
			segtree[segtree[node].rnode].lazy=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;
		return query(l, r, segtree[node].lnode)+query(l, r, segtree[node].rnode);
	}
	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;
		update(l, r, segtree[node].lnode);
		update(l, r, segtree[node].rnode);
		segtree[node].val=segtree[segtree[node].lnode].val+segtree[segtree[node].rnode].val;
	}
};
int32_t main(){
	ios;
	int t=1;
	int tno = 0;
	if (!t) cin>>t;
	while (t-(tno++)){
		SegTree segtree;
		deci(q);
		int c = 0;
		while (q--){
			deci(d);
			deci(l);deci(r);
			l+=c;
			r+=c;
			if (d==1){
				c=segtree.query(l,r);
				cout<<c<<endl;
			}
			else {
				segtree.update(l,r);
			}
		}
	}
}

Compilation message

apple.cpp:1: warning: ignoring '#pragma optimize ' [-Wunknown-pragmas]
    1 | #pragma optimize("Bismillahirrahmanirrahim")
      | 
apple.cpp: In constructor 'SegTree::Node::Node()':
apple.cpp:32:19: warning: 'SegTree::Node::rnode' will be initialized after [-Wreorder]
   32 |   int val, lnode, rnode, l, r, lazy;
      |                   ^~~~~
apple.cpp:32:7: warning:   'long long int SegTree::Node::val' [-Wreorder]
   32 |   int val, lnode, rnode, l, r, lazy;
      |       ^~~
apple.cpp:33:3: warning:   when initialized here [-Wreorder]
   33 |   Node():lnode(-1),rnode(-1),val(0),lazy(0){}
      |   ^~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 23 ms 12824 KB Output is correct
5 Correct 28 ms 12736 KB Output is correct
6 Correct 26 ms 12736 KB Output is correct
7 Correct 27 ms 12748 KB Output is correct
8 Correct 218 ms 99072 KB Output is correct
9 Correct 425 ms 197608 KB Output is correct
10 Correct 434 ms 197532 KB Output is correct
11 Correct 446 ms 197536 KB Output is correct
12 Correct 459 ms 197608 KB Output is correct
13 Incorrect 37 ms 8888 KB Output isn't correct
14 Halted 0 ms 0 KB -