From eaf55e5c19b23c29da799c4518d853febdf96026 Mon Sep 17 00:00:00 2001 From: oncsr Date: Tue, 25 Nov 2025 10:07:06 +0900 Subject: [PATCH] =?UTF-8?q?[20251125]=20BOJ=20/=20P4=20/=20=EC=93=B0?= =?UTF-8?q?=EB=8B=B4=EC=93=B0=EB=8B=B4=20/=20=EA=B6=8C=ED=98=81=EC=A4=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...60\353\213\264\354\223\260\353\213\264.md" | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 "khj20006/202511/25 BOJ P4 \354\223\260\353\213\264\354\223\260\353\213\264.md" diff --git "a/khj20006/202511/25 BOJ P4 \354\223\260\353\213\264\354\223\260\353\213\264.md" "b/khj20006/202511/25 BOJ P4 \354\223\260\353\213\264\354\223\260\353\213\264.md" new file mode 100644 index 00000000..7645c71c --- /dev/null +++ "b/khj20006/202511/25 BOJ P4 \354\223\260\353\213\264\354\223\260\353\213\264.md" @@ -0,0 +1,47 @@ +```cpp +#include +using namespace std; + +int N, Q; +int seg[262144]{}, height[100001]{}; + +void upt(int s, int e, int i, int n) { + if(s == e) { + if(s == N || height[s] <= height[s+1]) seg[n] = 0; + else seg[n] = 1; + return; + } + int m = (s+e)>>1; + if(i <= m) upt(s,m,i,n<<1); + else upt(m+1,e,i,n<<1|1); + seg[n] = seg[n<<1] + seg[n<<1|1]; +} + +int find(int s, int e, int l, int r, int n) { + if(l>r || l>e || r>1; + return find(s,m,l,r,n<<1) + find(m+1,e,l,r,n<<1|1); +} + +int main(){ + cin.tie(0)->sync_with_stdio(0); + + cin>>N>>Q; + for(int i=1;i<=N;i++) cin>>height[i]; + for(int i=1;i<=N;i++) upt(1,N,i,1); + + for(int o,l,r;Q--;) { + cin>>o>>l>>r; + if(o == 1) cout<<(find(1,N,l,r-1,1) ? "HSS090\n": "CS204\n"); + else { + swap(height[l], height[r]); + if(l>1) upt(1,N,l-1,1); + upt(1,N,l,1); + if(r>1) upt(1,N,r-1,1); + upt(1,N,r,1); + } + } + +} +```