#include <iostream>
#include <queue>
using namespace std;
const int BASE = 1 << 20;
const int BASE2 = 1 << 19;
int TREE[BASE << 1];
int LAZY[BASE << 1];
pair<int, int> TREE2[BASE2 << 1];
priority_queue<pair<int, int>> Q;
void push(int v, int l, int r){
TREE[l] += LAZY[v];
TREE[r] += LAZY[v];
LAZY[l] += LAZY[v];
LAZY[r] += LAZY[v];
LAZY[v] = 0;
}
void add(int v, int l, int r, int a, int b, int val){
if(r < a || b < l) return;
else if(a <= l && r <= b){
TREE[v] += val;
LAZY[v] += val;
}
else{
int mid = (l+r)/2;
push(v, 2*v, 2*v + 1);
add(2*v, l, mid, a, b, val);
add(2*v + 1, mid+1, r, a, b, val);
TREE[v] = min(TREE[2*v], TREE[2*v+1]);
}
}
int querymin(int v, int l, int r, int a, int b){
if(r < a || b < l) return 1e9;
else if(a <= l && r <= b)
return TREE[v];
else{
int mid = (l+r)/2;
push(v, 2*v, 2*v + 1);
return min(querymin(2*v, l, mid, a, b), querymin(2*v + 1, mid+1, r, a, b));
}
}
void update(int v, pair<int, int> val){
v+= BASE2;
TREE2[v] = val;
v/=2;
while (v > 0){
int l = 2*v, r = 2*v + 1;
if(TREE2[l].first == TREE2[r].first){
if(TREE2[l].second < TREE2[r].second)
TREE2[v] = TREE2[l];
else TREE2[v] = TREE2[r];
}
else TREE2[v] = max(TREE2[l], TREE2[r]);
v/=2;
}
}
pair<int, int> query(int a, int b){
a += BASE2 - 1;
b += BASE2 + 1;
pair<int, int> res = {0, -1};
while(a/2 != b/2){
if(a % 2 == 0){
if(res.first == TREE2[a+1].first){
if(TREE2[a+1].second < res.second)
res = TREE2[a+1];
}
else res = max(res, TREE2[a+1]);
}
if(b % 2 == 1){
if(res.first == TREE2[b-1].first){
if(TREE2[b-1].second < res.second)
res = TREE2[b-1];
}
else res = max(res, TREE2[b-1]);
}
a/=2; b/=2;
}
return res;
}
int BS(int idx){
int l = 1, r = idx, mid;
while(l < r){
mid = (l + r)/2;
if(querymin(1, 0, BASE-1, mid, idx)) r = mid;
else l = mid + 1;
}
return l;
}
int solve(int d){
int res = 0;
while(Q.size()){
auto [a, i] = Q.top();
Q.pop();
a = -a;
i = -i;
int idx = BS(i-1);
pair<int, int> quer = query(idx, i);
pair<int, int> val;
//cout << "a :: " << a << " bsidx" << idx << endl;
val.first = quer.first;
val.second = a;
if(quer.second != a) val.first += 1;
//cout << "a: " << a << " val" << val.first << endl;
res = max(res, val.first);
update(i, val);
add(1, 0, BASE-1, i, i+d-1, 1);
}
return res;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, d;
cin >> n >> d;
for(int i = 0; i < BASE2; i++) TREE2[i] = {0, -1};
for(int i = 1; i <= n; i++){
int a;
cin >> a;
Q.push({-a, -i});
}
cout << solve(d) << "\n";
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
4436 KB |
Output is correct |
2 |
Correct |
2 ms |
4436 KB |
Output is correct |
3 |
Correct |
2 ms |
4436 KB |
Output is correct |
4 |
Correct |
2 ms |
4436 KB |
Output is correct |
5 |
Correct |
2 ms |
4436 KB |
Output is correct |
6 |
Correct |
2 ms |
4436 KB |
Output is correct |
7 |
Correct |
2 ms |
4436 KB |
Output is correct |
8 |
Correct |
2 ms |
4436 KB |
Output is correct |
9 |
Correct |
2 ms |
4456 KB |
Output is correct |
10 |
Correct |
2 ms |
4436 KB |
Output is correct |
11 |
Correct |
2 ms |
4436 KB |
Output is correct |
12 |
Correct |
2 ms |
4436 KB |
Output is correct |
13 |
Correct |
2 ms |
4436 KB |
Output is correct |
14 |
Correct |
2 ms |
4436 KB |
Output is correct |
15 |
Correct |
3 ms |
4436 KB |
Output is correct |
16 |
Correct |
2 ms |
4436 KB |
Output is correct |
17 |
Correct |
2 ms |
4556 KB |
Output is correct |
18 |
Correct |
2 ms |
4436 KB |
Output is correct |
19 |
Correct |
2 ms |
4436 KB |
Output is correct |
20 |
Correct |
2 ms |
4436 KB |
Output is correct |
21 |
Correct |
2 ms |
4560 KB |
Output is correct |
22 |
Correct |
2 ms |
4436 KB |
Output is correct |
23 |
Correct |
3 ms |
4436 KB |
Output is correct |
24 |
Correct |
2 ms |
4436 KB |
Output is correct |
25 |
Correct |
2 ms |
4436 KB |
Output is correct |
26 |
Correct |
2 ms |
4436 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
4436 KB |
Output is correct |
2 |
Correct |
2 ms |
4436 KB |
Output is correct |
3 |
Correct |
2 ms |
4436 KB |
Output is correct |
4 |
Correct |
2 ms |
4436 KB |
Output is correct |
5 |
Correct |
2 ms |
4436 KB |
Output is correct |
6 |
Correct |
2 ms |
4436 KB |
Output is correct |
7 |
Correct |
2 ms |
4436 KB |
Output is correct |
8 |
Correct |
2 ms |
4436 KB |
Output is correct |
9 |
Correct |
2 ms |
4456 KB |
Output is correct |
10 |
Correct |
2 ms |
4436 KB |
Output is correct |
11 |
Correct |
2 ms |
4436 KB |
Output is correct |
12 |
Correct |
2 ms |
4436 KB |
Output is correct |
13 |
Correct |
2 ms |
4436 KB |
Output is correct |
14 |
Correct |
2 ms |
4436 KB |
Output is correct |
15 |
Correct |
3 ms |
4436 KB |
Output is correct |
16 |
Correct |
2 ms |
4436 KB |
Output is correct |
17 |
Correct |
2 ms |
4556 KB |
Output is correct |
18 |
Correct |
2 ms |
4436 KB |
Output is correct |
19 |
Correct |
2 ms |
4436 KB |
Output is correct |
20 |
Correct |
2 ms |
4436 KB |
Output is correct |
21 |
Correct |
2 ms |
4560 KB |
Output is correct |
22 |
Correct |
2 ms |
4436 KB |
Output is correct |
23 |
Correct |
3 ms |
4436 KB |
Output is correct |
24 |
Correct |
2 ms |
4436 KB |
Output is correct |
25 |
Correct |
2 ms |
4436 KB |
Output is correct |
26 |
Correct |
2 ms |
4436 KB |
Output is correct |
27 |
Correct |
3 ms |
4564 KB |
Output is correct |
28 |
Correct |
3 ms |
4564 KB |
Output is correct |
29 |
Correct |
3 ms |
4564 KB |
Output is correct |
30 |
Correct |
3 ms |
4564 KB |
Output is correct |
31 |
Correct |
3 ms |
4564 KB |
Output is correct |
32 |
Correct |
3 ms |
4564 KB |
Output is correct |
33 |
Correct |
4 ms |
4564 KB |
Output is correct |
34 |
Correct |
3 ms |
4564 KB |
Output is correct |
35 |
Correct |
3 ms |
4564 KB |
Output is correct |
36 |
Correct |
4 ms |
4564 KB |
Output is correct |
37 |
Correct |
4 ms |
4564 KB |
Output is correct |
38 |
Correct |
3 ms |
4564 KB |
Output is correct |
39 |
Correct |
3 ms |
4564 KB |
Output is correct |
40 |
Correct |
3 ms |
4564 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
4436 KB |
Output is correct |
2 |
Correct |
2 ms |
4436 KB |
Output is correct |
3 |
Correct |
2 ms |
4436 KB |
Output is correct |
4 |
Correct |
2 ms |
4436 KB |
Output is correct |
5 |
Correct |
2 ms |
4436 KB |
Output is correct |
6 |
Correct |
2 ms |
4436 KB |
Output is correct |
7 |
Correct |
2 ms |
4436 KB |
Output is correct |
8 |
Correct |
2 ms |
4436 KB |
Output is correct |
9 |
Correct |
2 ms |
4456 KB |
Output is correct |
10 |
Correct |
2 ms |
4436 KB |
Output is correct |
11 |
Correct |
2 ms |
4436 KB |
Output is correct |
12 |
Correct |
2 ms |
4436 KB |
Output is correct |
13 |
Correct |
2 ms |
4436 KB |
Output is correct |
14 |
Correct |
2 ms |
4436 KB |
Output is correct |
15 |
Correct |
3 ms |
4436 KB |
Output is correct |
16 |
Correct |
2 ms |
4436 KB |
Output is correct |
17 |
Correct |
2 ms |
4556 KB |
Output is correct |
18 |
Correct |
2 ms |
4436 KB |
Output is correct |
19 |
Correct |
2 ms |
4436 KB |
Output is correct |
20 |
Correct |
2 ms |
4436 KB |
Output is correct |
21 |
Correct |
2 ms |
4560 KB |
Output is correct |
22 |
Correct |
2 ms |
4436 KB |
Output is correct |
23 |
Correct |
3 ms |
4436 KB |
Output is correct |
24 |
Correct |
2 ms |
4436 KB |
Output is correct |
25 |
Correct |
2 ms |
4436 KB |
Output is correct |
26 |
Correct |
2 ms |
4436 KB |
Output is correct |
27 |
Correct |
3 ms |
4564 KB |
Output is correct |
28 |
Correct |
3 ms |
4564 KB |
Output is correct |
29 |
Correct |
3 ms |
4564 KB |
Output is correct |
30 |
Correct |
3 ms |
4564 KB |
Output is correct |
31 |
Correct |
3 ms |
4564 KB |
Output is correct |
32 |
Correct |
3 ms |
4564 KB |
Output is correct |
33 |
Correct |
4 ms |
4564 KB |
Output is correct |
34 |
Correct |
3 ms |
4564 KB |
Output is correct |
35 |
Correct |
3 ms |
4564 KB |
Output is correct |
36 |
Correct |
4 ms |
4564 KB |
Output is correct |
37 |
Correct |
4 ms |
4564 KB |
Output is correct |
38 |
Correct |
3 ms |
4564 KB |
Output is correct |
39 |
Correct |
3 ms |
4564 KB |
Output is correct |
40 |
Correct |
3 ms |
4564 KB |
Output is correct |
41 |
Correct |
23 ms |
4820 KB |
Output is correct |
42 |
Correct |
24 ms |
4820 KB |
Output is correct |
43 |
Correct |
25 ms |
4820 KB |
Output is correct |
44 |
Correct |
23 ms |
4820 KB |
Output is correct |
45 |
Correct |
26 ms |
4820 KB |
Output is correct |
46 |
Correct |
28 ms |
4948 KB |
Output is correct |
47 |
Correct |
29 ms |
4820 KB |
Output is correct |
48 |
Correct |
25 ms |
4820 KB |
Output is correct |
49 |
Correct |
30 ms |
4956 KB |
Output is correct |
50 |
Correct |
29 ms |
4820 KB |
Output is correct |
51 |
Correct |
23 ms |
4820 KB |
Output is correct |
52 |
Correct |
24 ms |
4820 KB |
Output is correct |
53 |
Correct |
25 ms |
4972 KB |
Output is correct |
54 |
Correct |
26 ms |
4820 KB |
Output is correct |
55 |
Correct |
29 ms |
4820 KB |
Output is correct |
56 |
Correct |
29 ms |
4820 KB |
Output is correct |
57 |
Correct |
28 ms |
4820 KB |
Output is correct |
58 |
Correct |
28 ms |
4948 KB |
Output is correct |
59 |
Correct |
29 ms |
4948 KB |
Output is correct |
60 |
Correct |
27 ms |
4820 KB |
Output is correct |
61 |
Correct |
26 ms |
4820 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1639 ms |
14072 KB |
Output is correct |
2 |
Correct |
1395 ms |
13956 KB |
Output is correct |
3 |
Correct |
1508 ms |
13968 KB |
Output is correct |
4 |
Correct |
1657 ms |
14012 KB |
Output is correct |
5 |
Correct |
1516 ms |
14004 KB |
Output is correct |
6 |
Correct |
1607 ms |
14012 KB |
Output is correct |
7 |
Correct |
1642 ms |
14004 KB |
Output is correct |
8 |
Correct |
1289 ms |
16956 KB |
Output is correct |
9 |
Correct |
1538 ms |
17004 KB |
Output is correct |
10 |
Correct |
1309 ms |
16972 KB |
Output is correct |
11 |
Correct |
1442 ms |
16988 KB |
Output is correct |
12 |
Correct |
1516 ms |
16888 KB |
Output is correct |
13 |
Correct |
1684 ms |
17012 KB |
Output is correct |
14 |
Correct |
1603 ms |
16848 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1695 ms |
18624 KB |
Output is correct |
2 |
Correct |
1853 ms |
18616 KB |
Output is correct |
3 |
Correct |
1999 ms |
18704 KB |
Output is correct |
4 |
Correct |
2061 ms |
18620 KB |
Output is correct |
5 |
Correct |
1960 ms |
18616 KB |
Output is correct |
6 |
Correct |
2015 ms |
18756 KB |
Output is correct |
7 |
Correct |
1700 ms |
18724 KB |
Output is correct |
8 |
Correct |
1370 ms |
21692 KB |
Output is correct |
9 |
Correct |
1739 ms |
21540 KB |
Output is correct |
10 |
Correct |
1841 ms |
21492 KB |
Output is correct |
11 |
Correct |
2082 ms |
21564 KB |
Output is correct |
12 |
Correct |
1929 ms |
21564 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
4436 KB |
Output is correct |
2 |
Correct |
2 ms |
4436 KB |
Output is correct |
3 |
Correct |
2 ms |
4436 KB |
Output is correct |
4 |
Correct |
2 ms |
4436 KB |
Output is correct |
5 |
Correct |
2 ms |
4436 KB |
Output is correct |
6 |
Correct |
2 ms |
4436 KB |
Output is correct |
7 |
Correct |
2 ms |
4436 KB |
Output is correct |
8 |
Correct |
2 ms |
4436 KB |
Output is correct |
9 |
Correct |
2 ms |
4456 KB |
Output is correct |
10 |
Correct |
2 ms |
4436 KB |
Output is correct |
11 |
Correct |
2 ms |
4436 KB |
Output is correct |
12 |
Correct |
2 ms |
4436 KB |
Output is correct |
13 |
Correct |
2 ms |
4436 KB |
Output is correct |
14 |
Correct |
2 ms |
4436 KB |
Output is correct |
15 |
Correct |
3 ms |
4436 KB |
Output is correct |
16 |
Correct |
2 ms |
4436 KB |
Output is correct |
17 |
Correct |
2 ms |
4556 KB |
Output is correct |
18 |
Correct |
2 ms |
4436 KB |
Output is correct |
19 |
Correct |
2 ms |
4436 KB |
Output is correct |
20 |
Correct |
2 ms |
4436 KB |
Output is correct |
21 |
Correct |
2 ms |
4560 KB |
Output is correct |
22 |
Correct |
2 ms |
4436 KB |
Output is correct |
23 |
Correct |
3 ms |
4436 KB |
Output is correct |
24 |
Correct |
2 ms |
4436 KB |
Output is correct |
25 |
Correct |
2 ms |
4436 KB |
Output is correct |
26 |
Correct |
2 ms |
4436 KB |
Output is correct |
27 |
Correct |
3 ms |
4564 KB |
Output is correct |
28 |
Correct |
3 ms |
4564 KB |
Output is correct |
29 |
Correct |
3 ms |
4564 KB |
Output is correct |
30 |
Correct |
3 ms |
4564 KB |
Output is correct |
31 |
Correct |
3 ms |
4564 KB |
Output is correct |
32 |
Correct |
3 ms |
4564 KB |
Output is correct |
33 |
Correct |
4 ms |
4564 KB |
Output is correct |
34 |
Correct |
3 ms |
4564 KB |
Output is correct |
35 |
Correct |
3 ms |
4564 KB |
Output is correct |
36 |
Correct |
4 ms |
4564 KB |
Output is correct |
37 |
Correct |
4 ms |
4564 KB |
Output is correct |
38 |
Correct |
3 ms |
4564 KB |
Output is correct |
39 |
Correct |
3 ms |
4564 KB |
Output is correct |
40 |
Correct |
3 ms |
4564 KB |
Output is correct |
41 |
Correct |
23 ms |
4820 KB |
Output is correct |
42 |
Correct |
24 ms |
4820 KB |
Output is correct |
43 |
Correct |
25 ms |
4820 KB |
Output is correct |
44 |
Correct |
23 ms |
4820 KB |
Output is correct |
45 |
Correct |
26 ms |
4820 KB |
Output is correct |
46 |
Correct |
28 ms |
4948 KB |
Output is correct |
47 |
Correct |
29 ms |
4820 KB |
Output is correct |
48 |
Correct |
25 ms |
4820 KB |
Output is correct |
49 |
Correct |
30 ms |
4956 KB |
Output is correct |
50 |
Correct |
29 ms |
4820 KB |
Output is correct |
51 |
Correct |
23 ms |
4820 KB |
Output is correct |
52 |
Correct |
24 ms |
4820 KB |
Output is correct |
53 |
Correct |
25 ms |
4972 KB |
Output is correct |
54 |
Correct |
26 ms |
4820 KB |
Output is correct |
55 |
Correct |
29 ms |
4820 KB |
Output is correct |
56 |
Correct |
29 ms |
4820 KB |
Output is correct |
57 |
Correct |
28 ms |
4820 KB |
Output is correct |
58 |
Correct |
28 ms |
4948 KB |
Output is correct |
59 |
Correct |
29 ms |
4948 KB |
Output is correct |
60 |
Correct |
27 ms |
4820 KB |
Output is correct |
61 |
Correct |
26 ms |
4820 KB |
Output is correct |
62 |
Correct |
1639 ms |
14072 KB |
Output is correct |
63 |
Correct |
1395 ms |
13956 KB |
Output is correct |
64 |
Correct |
1508 ms |
13968 KB |
Output is correct |
65 |
Correct |
1657 ms |
14012 KB |
Output is correct |
66 |
Correct |
1516 ms |
14004 KB |
Output is correct |
67 |
Correct |
1607 ms |
14012 KB |
Output is correct |
68 |
Correct |
1642 ms |
14004 KB |
Output is correct |
69 |
Correct |
1289 ms |
16956 KB |
Output is correct |
70 |
Correct |
1538 ms |
17004 KB |
Output is correct |
71 |
Correct |
1309 ms |
16972 KB |
Output is correct |
72 |
Correct |
1442 ms |
16988 KB |
Output is correct |
73 |
Correct |
1516 ms |
16888 KB |
Output is correct |
74 |
Correct |
1684 ms |
17012 KB |
Output is correct |
75 |
Correct |
1603 ms |
16848 KB |
Output is correct |
76 |
Correct |
1695 ms |
18624 KB |
Output is correct |
77 |
Correct |
1853 ms |
18616 KB |
Output is correct |
78 |
Correct |
1999 ms |
18704 KB |
Output is correct |
79 |
Correct |
2061 ms |
18620 KB |
Output is correct |
80 |
Correct |
1960 ms |
18616 KB |
Output is correct |
81 |
Correct |
2015 ms |
18756 KB |
Output is correct |
82 |
Correct |
1700 ms |
18724 KB |
Output is correct |
83 |
Correct |
1370 ms |
21692 KB |
Output is correct |
84 |
Correct |
1739 ms |
21540 KB |
Output is correct |
85 |
Correct |
1841 ms |
21492 KB |
Output is correct |
86 |
Correct |
2082 ms |
21564 KB |
Output is correct |
87 |
Correct |
1929 ms |
21564 KB |
Output is correct |
88 |
Correct |
1631 ms |
16832 KB |
Output is correct |
89 |
Correct |
1715 ms |
16956 KB |
Output is correct |
90 |
Correct |
1773 ms |
16828 KB |
Output is correct |
91 |
Correct |
1963 ms |
16828 KB |
Output is correct |
92 |
Correct |
1863 ms |
16952 KB |
Output is correct |
93 |
Correct |
2036 ms |
17096 KB |
Output is correct |
94 |
Correct |
2043 ms |
20248 KB |
Output is correct |
95 |
Correct |
1614 ms |
16828 KB |
Output is correct |
96 |
Correct |
1722 ms |
16832 KB |
Output is correct |
97 |
Correct |
1909 ms |
16868 KB |
Output is correct |
98 |
Correct |
1941 ms |
16948 KB |
Output is correct |
99 |
Correct |
1956 ms |
16972 KB |
Output is correct |
100 |
Correct |
1942 ms |
16956 KB |
Output is correct |
101 |
Correct |
1602 ms |
16992 KB |
Output is correct |
102 |
Correct |
1773 ms |
16908 KB |
Output is correct |
103 |
Correct |
1698 ms |
16884 KB |
Output is correct |
104 |
Correct |
1798 ms |
16996 KB |
Output is correct |
105 |
Correct |
1927 ms |
17260 KB |
Output is correct |
106 |
Correct |
1581 ms |
16848 KB |
Output is correct |
107 |
Correct |
1709 ms |
16928 KB |
Output is correct |
108 |
Correct |
1975 ms |
17188 KB |
Output is correct |
109 |
Correct |
1684 ms |
16940 KB |
Output is correct |
110 |
Correct |
1869 ms |
16920 KB |
Output is correct |
111 |
Correct |
1974 ms |
16856 KB |
Output is correct |
112 |
Correct |
1804 ms |
17032 KB |
Output is correct |
113 |
Correct |
1994 ms |
16992 KB |
Output is correct |
114 |
Correct |
1889 ms |
17032 KB |
Output is correct |
115 |
Correct |
1694 ms |
21560 KB |
Output is correct |
116 |
Correct |
1714 ms |
21616 KB |
Output is correct |
117 |
Correct |
1801 ms |
19288 KB |
Output is correct |
118 |
Correct |
1719 ms |
19388 KB |
Output is correct |
119 |
Correct |
1824 ms |
16828 KB |
Output is correct |
120 |
Correct |
1829 ms |
16956 KB |
Output is correct |