From d070d147c10c0a2a1aa557bd97187d2c49c1dc17 Mon Sep 17 00:00:00 2001 From: oncsr Date: Mon, 13 Oct 2025 11:01:44 +0900 Subject: [PATCH] =?UTF-8?q?[20251013]=20BOJ=20/=20P4=20/=20Pilots=20/=20?= =?UTF-8?q?=EA=B6=8C=ED=98=81=EC=A4=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- khj20006/202510/13 BOJ P4 Pilots.md | 78 +++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 khj20006/202510/13 BOJ P4 Pilots.md diff --git a/khj20006/202510/13 BOJ P4 Pilots.md b/khj20006/202510/13 BOJ P4 Pilots.md new file mode 100644 index 00000000..8ebfe38b --- /dev/null +++ b/khj20006/202510/13 BOJ P4 Pilots.md @@ -0,0 +1,78 @@ +# segtree +```cpp +#pragma GCC optimize("O3, unroll-loops") +#include +using namespace std; + +int T, N, a[3000001]{}, mn[8388608]{}, mx[8388608]{}, ans = 1; + +void init(int s, int e, int n) { + if(s == e) { + mn[n] = mx[n] = a[s]; + return; + } + int m = (s+e)>>1; + init(s,m,n<<1); init(m+1,e,(n<<1)|1); + mn[n] = min(mn[n<<1], mn[(n<<1)|1]); + mx[n] = max(mx[n<<1], mx[(n<<1)|1]); +} + +int f(int s, int e, int l, int r, int n) { + if(l>r || l>e || r>1; + return min(f(s,m,l,r,n<<1), f(m+1,e,l,r,(n<<1)|1)); +} + +int g(int s, int e, int l, int r, int n) { + if(l>r || l>e || r>1; + return max(g(s,m,l,r,n<<1), g(m+1,e,l,r,(n<<1)|1)); +} + +int main(){ + cin.tie(0)->sync_with_stdio(0); + + cin>>T>>N; + for(int i=1;i<=N;i++) cin>>a[i]; + init(1,N,1); + + for(int i=1,j=1;i<=N;i++) { + while(j T) j++; + ans = max(ans, i-j+1); + } + cout< +using namespace std; + +int T, N, ans = 1; +deque> mx, mn; + +int main(){ + cin.tie(0)->sync_with_stdio(0); + + cin>>T>>N; + for(int i=1,j=1,a;i<=N;i++) { + cin>>a; + while(!mn.empty() && mn.back().first > a) mn.pop_back(); + mn.emplace_back(a,i); + while(!mx.empty() && mx.back().first < a) mx.pop_back(); + mx.emplace_back(a,i); + while(j T) { + j++; + while(mx.front().second < j) mx.pop_front(); + while(mn.front().second < j) mn.pop_front(); + } + ans = max(ans, i-j+1); + } + cout<