-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathARRAYSUB - subarrays.cpp
52 lines (44 loc) · 1.6 KB
/
ARRAYSUB - subarrays.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
///HEADERS
#include <bits/stdc++.h>
///PREPROCESSORS
#define ll long long int
#define ull unsigned ll
#define vii vector<int>
#define vll vector<ll>
#define pb push_back
#define LIM 1000000
#define MOD 1000000007
#define MAX 10000000
#define pi acos(-1)
#define segVar int lft = node << 1 , rgt = (node << 1) + 1 , md = (st+ed) >> 1;
#define pii pair<int,int>
#define mpr make_pair
#define EPS 1e-9
#define sqr(x) ((x)*(x))
#define gamma 0.5772156649
#define harm(x) log(x) + gamma + 1.0/(2*x) - 1.0/(12*sqr(x))
#define joshephus(n,k) j(int n, int k) {ll res = 1; for(ll i=2; i<=n; i++) res = (res+k-1) % i + 1; return res;}
using namespace std;
int n,k, ara[LIM+10];
int main() {
// freopen("i.txt", "r", stdin);
// freopen("o.txt", "w",stdout);
scanf("%d", &n);
for(int i=0; i<n; i++) scanf("%d", &ara[i]);
scanf("%d", &k);
deque<int>dq;
for(int i=0; i<k-1; i++) {
while(!dq.empty() && ara[dq.back()] < ara[i]) dq.pop_back();
dq.push_back(i);
// cout << "PUSH"
}
for(int i=k-1; i<n; i++) {
while(!dq.empty() && ara[dq.back()] < ara[i]) dq.pop_back();
dq.push_back(i);
if(i > k-1) printf(" ");
printf("%d", ara[dq.front()]);
while(!dq.empty() && dq.front() <= i-k+1) dq.pop_front();
}
printf("\n");
return 0;
}