#include <bits/stdc++.h>
#define fi first
#define se second
#define ll long long
#define dl double
using namespace std;
const int N = 3e5 + 7;
const long long mod = 1e9 + 7;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int p[N];
int t[4 * N];
int get(int x)
{
return (p[x] == x ? x : p[x] = get(p[x]));
}
void meg(int x, int y)
{
x = get(x);
y = get(y);
p[y] = x;
}
int get(int x, int l, int r, int tl, int tr)
{
if(tl > tr)return 0;
if(l == tl && r == tr){
return t[x];
}
int m = (l + r) / 2;
return max(get(x + x, l, m, tl, min(tr, m)),
get(x + x + 1, m + 1, r, max(tl, m + 1), tr));
}
void upd(int x, int l, int r, int pos, int val)
{
if(l == r){
t[x] = val;
return;
}
int m = (l + r) / 2;
if(pos <= m)upd(x + x, l, m, pos, val);
else upd(x + x + 1, m + 1, r, pos, val);
t[x] = max(t[x + x], t[x + x + 1]);
}
void solve()
{
int n,D;
cin >> n >> D;
vector<int> a(n + 1, 0);
vector<int> id;
for(int i = 1; i <= n; i++){
cin >> a[i];
id.push_back(i);
p[i] = i;
}
sort(id.begin(), id.end(), [&](int i, int j){
return a[i] < a[j];
});
vector<int> d(n + 1, 0);
set<int> s;
for(int i = 0; i < n; i++){
int j = i;
vector<int> g;
while(j < n && a[id[i]] == a[id[j]]){
int x = id[j];
int mx = 1;
int id = -1;
auto gg = s.lower_bound(x);
if(!s.empty() && gg != s.begin()){
gg--;
if(x - *gg <= D)id = get(*gg);
}
if(id == -1){
g.push_back(1);
j++;
continue;
}
int l = 1, r = id;
while(l < r){
int m = (l + r) / 2;
gg = s.lower_bound(m);
if(get(*gg) == id)r = m;
else l = m + 1;
}
mx = get(1, 1, n, l, x) + 1;
g.push_back(mx);
j++;
}
for(int h = i; h < j; h++){
d[id[h]] = g[h - i];
s.insert(id[h]);
upd(1, 1, n, id[h], d[id[h]]);
}
for(int h = i; h < j; h++){
int st = id[h];
auto x = s.lower_bound(id[h]);
auto r = x,l = x;
if(l != s.begin()){
l--;
if(st - *l <= D)meg(*l, st);
}
r++;
if(r != s.end()){
if(*r - st <= D)meg(*r, st);
}
}
i = j - 1;
}
cout << *max_element(d.begin(), d.end());
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
//freopen( "input.txt" , "r" , stdin );
//freopen( "output.txt" , "w" , stdout );
int t = 1;
//cin >> t;
while(t--){
solve();
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
204 KB |
Output is correct |
2 |
Correct |
0 ms |
204 KB |
Output is correct |
3 |
Correct |
0 ms |
204 KB |
Output is correct |
4 |
Correct |
1 ms |
204 KB |
Output is correct |
5 |
Correct |
1 ms |
204 KB |
Output is correct |
6 |
Correct |
1 ms |
204 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
8 |
Correct |
1 ms |
204 KB |
Output is correct |
9 |
Correct |
1 ms |
204 KB |
Output is correct |
10 |
Correct |
1 ms |
204 KB |
Output is correct |
11 |
Correct |
1 ms |
204 KB |
Output is correct |
12 |
Correct |
1 ms |
204 KB |
Output is correct |
13 |
Correct |
1 ms |
204 KB |
Output is correct |
14 |
Correct |
1 ms |
204 KB |
Output is correct |
15 |
Correct |
1 ms |
204 KB |
Output is correct |
16 |
Correct |
1 ms |
204 KB |
Output is correct |
17 |
Correct |
0 ms |
204 KB |
Output is correct |
18 |
Correct |
1 ms |
204 KB |
Output is correct |
19 |
Correct |
1 ms |
204 KB |
Output is correct |
20 |
Correct |
1 ms |
204 KB |
Output is correct |
21 |
Correct |
1 ms |
204 KB |
Output is correct |
22 |
Correct |
1 ms |
204 KB |
Output is correct |
23 |
Correct |
1 ms |
204 KB |
Output is correct |
24 |
Correct |
1 ms |
204 KB |
Output is correct |
25 |
Correct |
1 ms |
204 KB |
Output is correct |
26 |
Correct |
1 ms |
204 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
204 KB |
Output is correct |
2 |
Correct |
0 ms |
204 KB |
Output is correct |
3 |
Correct |
0 ms |
204 KB |
Output is correct |
4 |
Correct |
1 ms |
204 KB |
Output is correct |
5 |
Correct |
1 ms |
204 KB |
Output is correct |
6 |
Correct |
1 ms |
204 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
8 |
Correct |
1 ms |
204 KB |
Output is correct |
9 |
Correct |
1 ms |
204 KB |
Output is correct |
10 |
Correct |
1 ms |
204 KB |
Output is correct |
11 |
Correct |
1 ms |
204 KB |
Output is correct |
12 |
Correct |
1 ms |
204 KB |
Output is correct |
13 |
Correct |
1 ms |
204 KB |
Output is correct |
14 |
Correct |
1 ms |
204 KB |
Output is correct |
15 |
Correct |
1 ms |
204 KB |
Output is correct |
16 |
Correct |
1 ms |
204 KB |
Output is correct |
17 |
Correct |
0 ms |
204 KB |
Output is correct |
18 |
Correct |
1 ms |
204 KB |
Output is correct |
19 |
Correct |
1 ms |
204 KB |
Output is correct |
20 |
Correct |
1 ms |
204 KB |
Output is correct |
21 |
Correct |
1 ms |
204 KB |
Output is correct |
22 |
Correct |
1 ms |
204 KB |
Output is correct |
23 |
Correct |
1 ms |
204 KB |
Output is correct |
24 |
Correct |
1 ms |
204 KB |
Output is correct |
25 |
Correct |
1 ms |
204 KB |
Output is correct |
26 |
Correct |
1 ms |
204 KB |
Output is correct |
27 |
Correct |
1 ms |
332 KB |
Output is correct |
28 |
Correct |
1 ms |
332 KB |
Output is correct |
29 |
Correct |
1 ms |
332 KB |
Output is correct |
30 |
Correct |
1 ms |
332 KB |
Output is correct |
31 |
Correct |
1 ms |
332 KB |
Output is correct |
32 |
Correct |
1 ms |
332 KB |
Output is correct |
33 |
Correct |
1 ms |
332 KB |
Output is correct |
34 |
Correct |
2 ms |
332 KB |
Output is correct |
35 |
Correct |
1 ms |
332 KB |
Output is correct |
36 |
Correct |
1 ms |
332 KB |
Output is correct |
37 |
Correct |
1 ms |
332 KB |
Output is correct |
38 |
Correct |
1 ms |
332 KB |
Output is correct |
39 |
Correct |
1 ms |
332 KB |
Output is correct |
40 |
Correct |
1 ms |
332 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
204 KB |
Output is correct |
2 |
Correct |
0 ms |
204 KB |
Output is correct |
3 |
Correct |
0 ms |
204 KB |
Output is correct |
4 |
Correct |
1 ms |
204 KB |
Output is correct |
5 |
Correct |
1 ms |
204 KB |
Output is correct |
6 |
Correct |
1 ms |
204 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
8 |
Correct |
1 ms |
204 KB |
Output is correct |
9 |
Correct |
1 ms |
204 KB |
Output is correct |
10 |
Correct |
1 ms |
204 KB |
Output is correct |
11 |
Correct |
1 ms |
204 KB |
Output is correct |
12 |
Correct |
1 ms |
204 KB |
Output is correct |
13 |
Correct |
1 ms |
204 KB |
Output is correct |
14 |
Correct |
1 ms |
204 KB |
Output is correct |
15 |
Correct |
1 ms |
204 KB |
Output is correct |
16 |
Correct |
1 ms |
204 KB |
Output is correct |
17 |
Correct |
0 ms |
204 KB |
Output is correct |
18 |
Correct |
1 ms |
204 KB |
Output is correct |
19 |
Correct |
1 ms |
204 KB |
Output is correct |
20 |
Correct |
1 ms |
204 KB |
Output is correct |
21 |
Correct |
1 ms |
204 KB |
Output is correct |
22 |
Correct |
1 ms |
204 KB |
Output is correct |
23 |
Correct |
1 ms |
204 KB |
Output is correct |
24 |
Correct |
1 ms |
204 KB |
Output is correct |
25 |
Correct |
1 ms |
204 KB |
Output is correct |
26 |
Correct |
1 ms |
204 KB |
Output is correct |
27 |
Correct |
1 ms |
332 KB |
Output is correct |
28 |
Correct |
1 ms |
332 KB |
Output is correct |
29 |
Correct |
1 ms |
332 KB |
Output is correct |
30 |
Correct |
1 ms |
332 KB |
Output is correct |
31 |
Correct |
1 ms |
332 KB |
Output is correct |
32 |
Correct |
1 ms |
332 KB |
Output is correct |
33 |
Correct |
1 ms |
332 KB |
Output is correct |
34 |
Correct |
2 ms |
332 KB |
Output is correct |
35 |
Correct |
1 ms |
332 KB |
Output is correct |
36 |
Correct |
1 ms |
332 KB |
Output is correct |
37 |
Correct |
1 ms |
332 KB |
Output is correct |
38 |
Correct |
1 ms |
332 KB |
Output is correct |
39 |
Correct |
1 ms |
332 KB |
Output is correct |
40 |
Correct |
1 ms |
332 KB |
Output is correct |
41 |
Correct |
15 ms |
808 KB |
Output is correct |
42 |
Correct |
13 ms |
728 KB |
Output is correct |
43 |
Correct |
9 ms |
716 KB |
Output is correct |
44 |
Correct |
10 ms |
780 KB |
Output is correct |
45 |
Correct |
11 ms |
732 KB |
Output is correct |
46 |
Correct |
10 ms |
736 KB |
Output is correct |
47 |
Correct |
11 ms |
784 KB |
Output is correct |
48 |
Correct |
17 ms |
716 KB |
Output is correct |
49 |
Correct |
11 ms |
716 KB |
Output is correct |
50 |
Correct |
11 ms |
740 KB |
Output is correct |
51 |
Correct |
10 ms |
716 KB |
Output is correct |
52 |
Correct |
12 ms |
716 KB |
Output is correct |
53 |
Correct |
8 ms |
716 KB |
Output is correct |
54 |
Correct |
9 ms |
768 KB |
Output is correct |
55 |
Correct |
10 ms |
760 KB |
Output is correct |
56 |
Correct |
10 ms |
844 KB |
Output is correct |
57 |
Correct |
11 ms |
824 KB |
Output is correct |
58 |
Correct |
11 ms |
836 KB |
Output is correct |
59 |
Correct |
6 ms |
716 KB |
Output is correct |
60 |
Correct |
9 ms |
740 KB |
Output is correct |
61 |
Correct |
6 ms |
716 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
209 ms |
24292 KB |
Output is correct |
2 |
Correct |
914 ms |
23404 KB |
Output is correct |
3 |
Correct |
1661 ms |
23100 KB |
Output is correct |
4 |
Correct |
1855 ms |
23128 KB |
Output is correct |
5 |
Correct |
1463 ms |
23104 KB |
Output is correct |
6 |
Correct |
1933 ms |
23164 KB |
Output is correct |
7 |
Correct |
339 ms |
23104 KB |
Output is correct |
8 |
Correct |
271 ms |
23084 KB |
Output is correct |
9 |
Correct |
646 ms |
23160 KB |
Output is correct |
10 |
Correct |
354 ms |
23180 KB |
Output is correct |
11 |
Correct |
1074 ms |
23212 KB |
Output is correct |
12 |
Correct |
990 ms |
23208 KB |
Output is correct |
13 |
Correct |
1588 ms |
23104 KB |
Output is correct |
14 |
Correct |
663 ms |
23112 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
223 ms |
24332 KB |
Output is correct |
2 |
Correct |
1090 ms |
25780 KB |
Output is correct |
3 |
Correct |
1124 ms |
25960 KB |
Output is correct |
4 |
Correct |
1099 ms |
25888 KB |
Output is correct |
5 |
Correct |
1029 ms |
26044 KB |
Output is correct |
6 |
Correct |
1187 ms |
25792 KB |
Output is correct |
7 |
Correct |
406 ms |
25900 KB |
Output is correct |
8 |
Correct |
281 ms |
25844 KB |
Output is correct |
9 |
Correct |
451 ms |
25484 KB |
Output is correct |
10 |
Correct |
601 ms |
25744 KB |
Output is correct |
11 |
Correct |
1328 ms |
25500 KB |
Output is correct |
12 |
Correct |
997 ms |
25588 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
204 KB |
Output is correct |
2 |
Correct |
0 ms |
204 KB |
Output is correct |
3 |
Correct |
0 ms |
204 KB |
Output is correct |
4 |
Correct |
1 ms |
204 KB |
Output is correct |
5 |
Correct |
1 ms |
204 KB |
Output is correct |
6 |
Correct |
1 ms |
204 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
8 |
Correct |
1 ms |
204 KB |
Output is correct |
9 |
Correct |
1 ms |
204 KB |
Output is correct |
10 |
Correct |
1 ms |
204 KB |
Output is correct |
11 |
Correct |
1 ms |
204 KB |
Output is correct |
12 |
Correct |
1 ms |
204 KB |
Output is correct |
13 |
Correct |
1 ms |
204 KB |
Output is correct |
14 |
Correct |
1 ms |
204 KB |
Output is correct |
15 |
Correct |
1 ms |
204 KB |
Output is correct |
16 |
Correct |
1 ms |
204 KB |
Output is correct |
17 |
Correct |
0 ms |
204 KB |
Output is correct |
18 |
Correct |
1 ms |
204 KB |
Output is correct |
19 |
Correct |
1 ms |
204 KB |
Output is correct |
20 |
Correct |
1 ms |
204 KB |
Output is correct |
21 |
Correct |
1 ms |
204 KB |
Output is correct |
22 |
Correct |
1 ms |
204 KB |
Output is correct |
23 |
Correct |
1 ms |
204 KB |
Output is correct |
24 |
Correct |
1 ms |
204 KB |
Output is correct |
25 |
Correct |
1 ms |
204 KB |
Output is correct |
26 |
Correct |
1 ms |
204 KB |
Output is correct |
27 |
Correct |
1 ms |
332 KB |
Output is correct |
28 |
Correct |
1 ms |
332 KB |
Output is correct |
29 |
Correct |
1 ms |
332 KB |
Output is correct |
30 |
Correct |
1 ms |
332 KB |
Output is correct |
31 |
Correct |
1 ms |
332 KB |
Output is correct |
32 |
Correct |
1 ms |
332 KB |
Output is correct |
33 |
Correct |
1 ms |
332 KB |
Output is correct |
34 |
Correct |
2 ms |
332 KB |
Output is correct |
35 |
Correct |
1 ms |
332 KB |
Output is correct |
36 |
Correct |
1 ms |
332 KB |
Output is correct |
37 |
Correct |
1 ms |
332 KB |
Output is correct |
38 |
Correct |
1 ms |
332 KB |
Output is correct |
39 |
Correct |
1 ms |
332 KB |
Output is correct |
40 |
Correct |
1 ms |
332 KB |
Output is correct |
41 |
Correct |
15 ms |
808 KB |
Output is correct |
42 |
Correct |
13 ms |
728 KB |
Output is correct |
43 |
Correct |
9 ms |
716 KB |
Output is correct |
44 |
Correct |
10 ms |
780 KB |
Output is correct |
45 |
Correct |
11 ms |
732 KB |
Output is correct |
46 |
Correct |
10 ms |
736 KB |
Output is correct |
47 |
Correct |
11 ms |
784 KB |
Output is correct |
48 |
Correct |
17 ms |
716 KB |
Output is correct |
49 |
Correct |
11 ms |
716 KB |
Output is correct |
50 |
Correct |
11 ms |
740 KB |
Output is correct |
51 |
Correct |
10 ms |
716 KB |
Output is correct |
52 |
Correct |
12 ms |
716 KB |
Output is correct |
53 |
Correct |
8 ms |
716 KB |
Output is correct |
54 |
Correct |
9 ms |
768 KB |
Output is correct |
55 |
Correct |
10 ms |
760 KB |
Output is correct |
56 |
Correct |
10 ms |
844 KB |
Output is correct |
57 |
Correct |
11 ms |
824 KB |
Output is correct |
58 |
Correct |
11 ms |
836 KB |
Output is correct |
59 |
Correct |
6 ms |
716 KB |
Output is correct |
60 |
Correct |
9 ms |
740 KB |
Output is correct |
61 |
Correct |
6 ms |
716 KB |
Output is correct |
62 |
Correct |
209 ms |
24292 KB |
Output is correct |
63 |
Correct |
914 ms |
23404 KB |
Output is correct |
64 |
Correct |
1661 ms |
23100 KB |
Output is correct |
65 |
Correct |
1855 ms |
23128 KB |
Output is correct |
66 |
Correct |
1463 ms |
23104 KB |
Output is correct |
67 |
Correct |
1933 ms |
23164 KB |
Output is correct |
68 |
Correct |
339 ms |
23104 KB |
Output is correct |
69 |
Correct |
271 ms |
23084 KB |
Output is correct |
70 |
Correct |
646 ms |
23160 KB |
Output is correct |
71 |
Correct |
354 ms |
23180 KB |
Output is correct |
72 |
Correct |
1074 ms |
23212 KB |
Output is correct |
73 |
Correct |
990 ms |
23208 KB |
Output is correct |
74 |
Correct |
1588 ms |
23104 KB |
Output is correct |
75 |
Correct |
663 ms |
23112 KB |
Output is correct |
76 |
Correct |
223 ms |
24332 KB |
Output is correct |
77 |
Correct |
1090 ms |
25780 KB |
Output is correct |
78 |
Correct |
1124 ms |
25960 KB |
Output is correct |
79 |
Correct |
1099 ms |
25888 KB |
Output is correct |
80 |
Correct |
1029 ms |
26044 KB |
Output is correct |
81 |
Correct |
1187 ms |
25792 KB |
Output is correct |
82 |
Correct |
406 ms |
25900 KB |
Output is correct |
83 |
Correct |
281 ms |
25844 KB |
Output is correct |
84 |
Correct |
451 ms |
25484 KB |
Output is correct |
85 |
Correct |
601 ms |
25744 KB |
Output is correct |
86 |
Correct |
1328 ms |
25500 KB |
Output is correct |
87 |
Correct |
997 ms |
25588 KB |
Output is correct |
88 |
Correct |
2688 ms |
25716 KB |
Output is correct |
89 |
Correct |
2529 ms |
25216 KB |
Output is correct |
90 |
Correct |
1584 ms |
24372 KB |
Output is correct |
91 |
Correct |
1300 ms |
23816 KB |
Output is correct |
92 |
Correct |
1111 ms |
24872 KB |
Output is correct |
93 |
Correct |
1061 ms |
25448 KB |
Output is correct |
94 |
Correct |
1154 ms |
25536 KB |
Output is correct |
95 |
Correct |
1701 ms |
25596 KB |
Output is correct |
96 |
Correct |
1493 ms |
25308 KB |
Output is correct |
97 |
Correct |
1283 ms |
25444 KB |
Output is correct |
98 |
Correct |
1126 ms |
24920 KB |
Output is correct |
99 |
Correct |
1141 ms |
24600 KB |
Output is correct |
100 |
Correct |
1068 ms |
24180 KB |
Output is correct |
101 |
Correct |
665 ms |
24840 KB |
Output is correct |
102 |
Correct |
702 ms |
25456 KB |
Output is correct |
103 |
Correct |
743 ms |
25392 KB |
Output is correct |
104 |
Correct |
758 ms |
25428 KB |
Output is correct |
105 |
Correct |
764 ms |
25404 KB |
Output is correct |
106 |
Correct |
722 ms |
25104 KB |
Output is correct |
107 |
Correct |
745 ms |
25148 KB |
Output is correct |
108 |
Correct |
1087 ms |
24788 KB |
Output is correct |
109 |
Correct |
1222 ms |
24292 KB |
Output is correct |
110 |
Correct |
1363 ms |
23960 KB |
Output is correct |
111 |
Correct |
1195 ms |
24916 KB |
Output is correct |
112 |
Correct |
937 ms |
25532 KB |
Output is correct |
113 |
Correct |
1134 ms |
25728 KB |
Output is correct |
114 |
Correct |
1218 ms |
25748 KB |
Output is correct |
115 |
Correct |
1041 ms |
25752 KB |
Output is correct |
116 |
Correct |
351 ms |
25400 KB |
Output is correct |
117 |
Correct |
1140 ms |
25864 KB |
Output is correct |
118 |
Correct |
437 ms |
25436 KB |
Output is correct |
119 |
Correct |
760 ms |
25272 KB |
Output is correct |
120 |
Correct |
381 ms |
25244 KB |
Output is correct |