#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/rope>
#define ff(i,a,b) for(int (i) = (a); (i) <= (b); ++(i))
#define fb(i,a,b) for(int (i) = (a); (i) >= (b); --(i))
#define mod 998244353
#define xx first
#define yy second
#define all(a) (a).begin(), (a).end()
#define pb push_back
#define ll long long
#define pii pair<int,int>
#define maxn 300005
using namespace std;
using namespace __gnu_pbds;
typedef tree<int, null_type, less<int>,rb_tree_tag, tree_order_statistics_node_update> ordered_set;/// find_by_order(x)(x+1th) , order_of_key() (strictly less)
mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
int br;
map<int,int> sl;
int n,d;
int niz[maxn];
vector<int> poz[maxn];
int dp[maxn];
int desno[maxn];
int seg[4 * maxn];
void update(int node, int l, int r, int poz, int val){
if(l == r){
seg[node] = val;
return;
}
int mid = (l + r) / 2;
if(poz <= mid)update(node * 2, l, mid, poz, val);
else update(node * 2 + 1, mid + 1, r, poz, val);
seg[node] = max(seg[node * 2], seg[node * 2 + 1]);
}
int query(int node, int l, int r, int levo, int desno){
if(l > r || levo > desno || levo > r || l > desno)return 0;
if(l >= levo && r <= desno)return seg[node];
int mid = (l + r) / 2;
return max(query(node * 2, l, mid, levo, desno), query(node * 2 + 1, mid + 1, r, levo, desno));
}
set<int> s1;
set<int> s2;
int resi(int x){
int ppp = s1.size();
if(ppp == 0)return 1 + query(1,1,n,1,x - 1);
auto it = s1.lower_bound(x);
if(it == s1.begin())return 1 + query(1,1,n,1,x - 1);
it--;
if((*it)+d > x){
if(it == s1.begin())return 1 + query(1,1,n,1,x - 1);
it--;
}
if((*it)+d > x){
if(it == s1.begin())return 1 + query(1,1,n,1,x - 1);
it--;
}
return 1 + query(1,1,n,min((*it)+d-1, x-1), x-1);
}
void dodaj(int x){
auto it = s1.lower_bound(x);
if(it == s1.begin() && (*it) != x)return;
if((*it) != x)it--;
auto it2 = s2.lower_bound(x);
s2.insert(x);
int p1 = *it;
int p2 = *it2;
if(x - p1 < d)s1.erase(p1);
if(p2 - (x+1) >= d)s1.insert(x+1);
return;
}
int main()
{
ios_base::sync_with_stdio(false); cin.tie(0);
cin >> n >> d;
s2.insert(0);
s2.insert(n+1);
vector<int> svi;
ff(i,1,n){
cin >> niz[i];
svi.pb(niz[i]);
}
sort(svi.begin(), svi.end());
int last = -1;
br = 1;
for(auto c:svi){
if(c == last)continue;
sl[c] = br;
br++;
last = c;
}
ff(i,1,n)niz[i] = sl[niz[i]];
ff(i,1,n){
poz[niz[i]].pb(i);
}
s1.insert(1);
ff(i,1,br-1){
for(auto c:poz[i]){
dp[c] = resi(c);
}
for(auto c:poz[i]){
dodaj(c);
update(1,1,n,c,dp[c]);
}
}
int ans = 0;
ff(i,1,n)ans = max(ans, dp[i]);
cout << ans << "\n";
return 0;
}
Compilation message
Main.cpp: In function 'int main()':
Main.cpp:6:27: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
6 | #define ff(i,a,b) for(int (i) = (a); (i) <= (b); ++(i))
| ^
Main.cpp:102:5: note: in expansion of macro 'ff'
102 | ff(i,1,n){
| ^~
Main.cpp:6:27: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
6 | #define ff(i,a,b) for(int (i) = (a); (i) <= (b); ++(i))
| ^
Main.cpp:115:5: note: in expansion of macro 'ff'
115 | ff(i,1,n)niz[i] = sl[niz[i]];
| ^~
Main.cpp:6:27: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
6 | #define ff(i,a,b) for(int (i) = (a); (i) <= (b); ++(i))
| ^
Main.cpp:116:5: note: in expansion of macro 'ff'
116 | ff(i,1,n){
| ^~
Main.cpp:6:27: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
6 | #define ff(i,a,b) for(int (i) = (a); (i) <= (b); ++(i))
| ^
Main.cpp:123:5: note: in expansion of macro 'ff'
123 | ff(i,1,br-1){
| ^~
Main.cpp:6:27: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
6 | #define ff(i,a,b) for(int (i) = (a); (i) <= (b); ++(i))
| ^
Main.cpp:133:5: note: in expansion of macro 'ff'
133 | ff(i,1,n)ans = max(ans, dp[i]);
| ^~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
7372 KB |
Output is correct |
2 |
Correct |
5 ms |
7372 KB |
Output is correct |
3 |
Correct |
5 ms |
7372 KB |
Output is correct |
4 |
Correct |
5 ms |
7372 KB |
Output is correct |
5 |
Correct |
6 ms |
7328 KB |
Output is correct |
6 |
Correct |
5 ms |
7368 KB |
Output is correct |
7 |
Correct |
5 ms |
7372 KB |
Output is correct |
8 |
Correct |
5 ms |
7372 KB |
Output is correct |
9 |
Correct |
5 ms |
7372 KB |
Output is correct |
10 |
Correct |
5 ms |
7292 KB |
Output is correct |
11 |
Correct |
5 ms |
7372 KB |
Output is correct |
12 |
Correct |
5 ms |
7372 KB |
Output is correct |
13 |
Correct |
5 ms |
7372 KB |
Output is correct |
14 |
Correct |
6 ms |
7372 KB |
Output is correct |
15 |
Correct |
5 ms |
7372 KB |
Output is correct |
16 |
Correct |
5 ms |
7372 KB |
Output is correct |
17 |
Correct |
5 ms |
7372 KB |
Output is correct |
18 |
Correct |
5 ms |
7372 KB |
Output is correct |
19 |
Correct |
5 ms |
7372 KB |
Output is correct |
20 |
Correct |
6 ms |
7372 KB |
Output is correct |
21 |
Correct |
5 ms |
7372 KB |
Output is correct |
22 |
Correct |
5 ms |
7372 KB |
Output is correct |
23 |
Correct |
5 ms |
7372 KB |
Output is correct |
24 |
Correct |
6 ms |
7296 KB |
Output is correct |
25 |
Correct |
5 ms |
7376 KB |
Output is correct |
26 |
Correct |
5 ms |
7372 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
7372 KB |
Output is correct |
2 |
Correct |
5 ms |
7372 KB |
Output is correct |
3 |
Correct |
5 ms |
7372 KB |
Output is correct |
4 |
Correct |
5 ms |
7372 KB |
Output is correct |
5 |
Correct |
6 ms |
7328 KB |
Output is correct |
6 |
Correct |
5 ms |
7368 KB |
Output is correct |
7 |
Correct |
5 ms |
7372 KB |
Output is correct |
8 |
Correct |
5 ms |
7372 KB |
Output is correct |
9 |
Correct |
5 ms |
7372 KB |
Output is correct |
10 |
Correct |
5 ms |
7292 KB |
Output is correct |
11 |
Correct |
5 ms |
7372 KB |
Output is correct |
12 |
Correct |
5 ms |
7372 KB |
Output is correct |
13 |
Correct |
5 ms |
7372 KB |
Output is correct |
14 |
Correct |
6 ms |
7372 KB |
Output is correct |
15 |
Correct |
5 ms |
7372 KB |
Output is correct |
16 |
Correct |
5 ms |
7372 KB |
Output is correct |
17 |
Correct |
5 ms |
7372 KB |
Output is correct |
18 |
Correct |
5 ms |
7372 KB |
Output is correct |
19 |
Correct |
5 ms |
7372 KB |
Output is correct |
20 |
Correct |
6 ms |
7372 KB |
Output is correct |
21 |
Correct |
5 ms |
7372 KB |
Output is correct |
22 |
Correct |
5 ms |
7372 KB |
Output is correct |
23 |
Correct |
5 ms |
7372 KB |
Output is correct |
24 |
Correct |
6 ms |
7296 KB |
Output is correct |
25 |
Correct |
5 ms |
7376 KB |
Output is correct |
26 |
Correct |
5 ms |
7372 KB |
Output is correct |
27 |
Correct |
6 ms |
7372 KB |
Output is correct |
28 |
Correct |
5 ms |
7372 KB |
Output is correct |
29 |
Correct |
6 ms |
7372 KB |
Output is correct |
30 |
Correct |
8 ms |
7372 KB |
Output is correct |
31 |
Correct |
5 ms |
7372 KB |
Output is correct |
32 |
Correct |
5 ms |
7372 KB |
Output is correct |
33 |
Correct |
6 ms |
7372 KB |
Output is correct |
34 |
Correct |
5 ms |
7372 KB |
Output is correct |
35 |
Correct |
5 ms |
7372 KB |
Output is correct |
36 |
Correct |
6 ms |
7404 KB |
Output is correct |
37 |
Correct |
5 ms |
7372 KB |
Output is correct |
38 |
Correct |
5 ms |
7372 KB |
Output is correct |
39 |
Correct |
6 ms |
7372 KB |
Output is correct |
40 |
Correct |
5 ms |
7372 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
7372 KB |
Output is correct |
2 |
Correct |
5 ms |
7372 KB |
Output is correct |
3 |
Correct |
5 ms |
7372 KB |
Output is correct |
4 |
Correct |
5 ms |
7372 KB |
Output is correct |
5 |
Correct |
6 ms |
7328 KB |
Output is correct |
6 |
Correct |
5 ms |
7368 KB |
Output is correct |
7 |
Correct |
5 ms |
7372 KB |
Output is correct |
8 |
Correct |
5 ms |
7372 KB |
Output is correct |
9 |
Correct |
5 ms |
7372 KB |
Output is correct |
10 |
Correct |
5 ms |
7292 KB |
Output is correct |
11 |
Correct |
5 ms |
7372 KB |
Output is correct |
12 |
Correct |
5 ms |
7372 KB |
Output is correct |
13 |
Correct |
5 ms |
7372 KB |
Output is correct |
14 |
Correct |
6 ms |
7372 KB |
Output is correct |
15 |
Correct |
5 ms |
7372 KB |
Output is correct |
16 |
Correct |
5 ms |
7372 KB |
Output is correct |
17 |
Correct |
5 ms |
7372 KB |
Output is correct |
18 |
Correct |
5 ms |
7372 KB |
Output is correct |
19 |
Correct |
5 ms |
7372 KB |
Output is correct |
20 |
Correct |
6 ms |
7372 KB |
Output is correct |
21 |
Correct |
5 ms |
7372 KB |
Output is correct |
22 |
Correct |
5 ms |
7372 KB |
Output is correct |
23 |
Correct |
5 ms |
7372 KB |
Output is correct |
24 |
Correct |
6 ms |
7296 KB |
Output is correct |
25 |
Correct |
5 ms |
7376 KB |
Output is correct |
26 |
Correct |
5 ms |
7372 KB |
Output is correct |
27 |
Correct |
6 ms |
7372 KB |
Output is correct |
28 |
Correct |
5 ms |
7372 KB |
Output is correct |
29 |
Correct |
6 ms |
7372 KB |
Output is correct |
30 |
Correct |
8 ms |
7372 KB |
Output is correct |
31 |
Correct |
5 ms |
7372 KB |
Output is correct |
32 |
Correct |
5 ms |
7372 KB |
Output is correct |
33 |
Correct |
6 ms |
7372 KB |
Output is correct |
34 |
Correct |
5 ms |
7372 KB |
Output is correct |
35 |
Correct |
5 ms |
7372 KB |
Output is correct |
36 |
Correct |
6 ms |
7404 KB |
Output is correct |
37 |
Correct |
5 ms |
7372 KB |
Output is correct |
38 |
Correct |
5 ms |
7372 KB |
Output is correct |
39 |
Correct |
6 ms |
7372 KB |
Output is correct |
40 |
Correct |
5 ms |
7372 KB |
Output is correct |
41 |
Correct |
15 ms |
7884 KB |
Output is correct |
42 |
Correct |
16 ms |
8312 KB |
Output is correct |
43 |
Correct |
10 ms |
7756 KB |
Output is correct |
44 |
Correct |
11 ms |
7756 KB |
Output is correct |
45 |
Correct |
13 ms |
7756 KB |
Output is correct |
46 |
Correct |
12 ms |
8020 KB |
Output is correct |
47 |
Correct |
15 ms |
8268 KB |
Output is correct |
48 |
Correct |
14 ms |
8268 KB |
Output is correct |
49 |
Correct |
13 ms |
8132 KB |
Output is correct |
50 |
Correct |
13 ms |
8012 KB |
Output is correct |
51 |
Correct |
18 ms |
8396 KB |
Output is correct |
52 |
Correct |
16 ms |
8360 KB |
Output is correct |
53 |
Correct |
12 ms |
8140 KB |
Output is correct |
54 |
Correct |
11 ms |
8088 KB |
Output is correct |
55 |
Correct |
12 ms |
8012 KB |
Output is correct |
56 |
Correct |
12 ms |
7960 KB |
Output is correct |
57 |
Correct |
15 ms |
8012 KB |
Output is correct |
58 |
Correct |
12 ms |
8012 KB |
Output is correct |
59 |
Correct |
10 ms |
8068 KB |
Output is correct |
60 |
Correct |
11 ms |
8068 KB |
Output is correct |
61 |
Correct |
11 ms |
8012 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
304 ms |
30196 KB |
Output is correct |
2 |
Correct |
371 ms |
30348 KB |
Output is correct |
3 |
Correct |
811 ms |
30904 KB |
Output is correct |
4 |
Correct |
1170 ms |
49060 KB |
Output is correct |
5 |
Correct |
893 ms |
52508 KB |
Output is correct |
6 |
Correct |
1215 ms |
52552 KB |
Output is correct |
7 |
Correct |
424 ms |
52296 KB |
Output is correct |
8 |
Correct |
414 ms |
52384 KB |
Output is correct |
9 |
Correct |
395 ms |
52432 KB |
Output is correct |
10 |
Correct |
442 ms |
52536 KB |
Output is correct |
11 |
Correct |
682 ms |
52632 KB |
Output is correct |
12 |
Correct |
844 ms |
52464 KB |
Output is correct |
13 |
Correct |
895 ms |
52440 KB |
Output is correct |
14 |
Correct |
1068 ms |
52544 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
184 ms |
16204 KB |
Output is correct |
2 |
Correct |
224 ms |
16580 KB |
Output is correct |
3 |
Correct |
281 ms |
17212 KB |
Output is correct |
4 |
Correct |
637 ms |
38368 KB |
Output is correct |
5 |
Correct |
616 ms |
38396 KB |
Output is correct |
6 |
Correct |
707 ms |
38460 KB |
Output is correct |
7 |
Correct |
288 ms |
38428 KB |
Output is correct |
8 |
Correct |
287 ms |
38476 KB |
Output is correct |
9 |
Correct |
303 ms |
38232 KB |
Output is correct |
10 |
Correct |
449 ms |
38380 KB |
Output is correct |
11 |
Correct |
610 ms |
38404 KB |
Output is correct |
12 |
Correct |
567 ms |
38456 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
7372 KB |
Output is correct |
2 |
Correct |
5 ms |
7372 KB |
Output is correct |
3 |
Correct |
5 ms |
7372 KB |
Output is correct |
4 |
Correct |
5 ms |
7372 KB |
Output is correct |
5 |
Correct |
6 ms |
7328 KB |
Output is correct |
6 |
Correct |
5 ms |
7368 KB |
Output is correct |
7 |
Correct |
5 ms |
7372 KB |
Output is correct |
8 |
Correct |
5 ms |
7372 KB |
Output is correct |
9 |
Correct |
5 ms |
7372 KB |
Output is correct |
10 |
Correct |
5 ms |
7292 KB |
Output is correct |
11 |
Correct |
5 ms |
7372 KB |
Output is correct |
12 |
Correct |
5 ms |
7372 KB |
Output is correct |
13 |
Correct |
5 ms |
7372 KB |
Output is correct |
14 |
Correct |
6 ms |
7372 KB |
Output is correct |
15 |
Correct |
5 ms |
7372 KB |
Output is correct |
16 |
Correct |
5 ms |
7372 KB |
Output is correct |
17 |
Correct |
5 ms |
7372 KB |
Output is correct |
18 |
Correct |
5 ms |
7372 KB |
Output is correct |
19 |
Correct |
5 ms |
7372 KB |
Output is correct |
20 |
Correct |
6 ms |
7372 KB |
Output is correct |
21 |
Correct |
5 ms |
7372 KB |
Output is correct |
22 |
Correct |
5 ms |
7372 KB |
Output is correct |
23 |
Correct |
5 ms |
7372 KB |
Output is correct |
24 |
Correct |
6 ms |
7296 KB |
Output is correct |
25 |
Correct |
5 ms |
7376 KB |
Output is correct |
26 |
Correct |
5 ms |
7372 KB |
Output is correct |
27 |
Correct |
6 ms |
7372 KB |
Output is correct |
28 |
Correct |
5 ms |
7372 KB |
Output is correct |
29 |
Correct |
6 ms |
7372 KB |
Output is correct |
30 |
Correct |
8 ms |
7372 KB |
Output is correct |
31 |
Correct |
5 ms |
7372 KB |
Output is correct |
32 |
Correct |
5 ms |
7372 KB |
Output is correct |
33 |
Correct |
6 ms |
7372 KB |
Output is correct |
34 |
Correct |
5 ms |
7372 KB |
Output is correct |
35 |
Correct |
5 ms |
7372 KB |
Output is correct |
36 |
Correct |
6 ms |
7404 KB |
Output is correct |
37 |
Correct |
5 ms |
7372 KB |
Output is correct |
38 |
Correct |
5 ms |
7372 KB |
Output is correct |
39 |
Correct |
6 ms |
7372 KB |
Output is correct |
40 |
Correct |
5 ms |
7372 KB |
Output is correct |
41 |
Correct |
15 ms |
7884 KB |
Output is correct |
42 |
Correct |
16 ms |
8312 KB |
Output is correct |
43 |
Correct |
10 ms |
7756 KB |
Output is correct |
44 |
Correct |
11 ms |
7756 KB |
Output is correct |
45 |
Correct |
13 ms |
7756 KB |
Output is correct |
46 |
Correct |
12 ms |
8020 KB |
Output is correct |
47 |
Correct |
15 ms |
8268 KB |
Output is correct |
48 |
Correct |
14 ms |
8268 KB |
Output is correct |
49 |
Correct |
13 ms |
8132 KB |
Output is correct |
50 |
Correct |
13 ms |
8012 KB |
Output is correct |
51 |
Correct |
18 ms |
8396 KB |
Output is correct |
52 |
Correct |
16 ms |
8360 KB |
Output is correct |
53 |
Correct |
12 ms |
8140 KB |
Output is correct |
54 |
Correct |
11 ms |
8088 KB |
Output is correct |
55 |
Correct |
12 ms |
8012 KB |
Output is correct |
56 |
Correct |
12 ms |
7960 KB |
Output is correct |
57 |
Correct |
15 ms |
8012 KB |
Output is correct |
58 |
Correct |
12 ms |
8012 KB |
Output is correct |
59 |
Correct |
10 ms |
8068 KB |
Output is correct |
60 |
Correct |
11 ms |
8068 KB |
Output is correct |
61 |
Correct |
11 ms |
8012 KB |
Output is correct |
62 |
Correct |
304 ms |
30196 KB |
Output is correct |
63 |
Correct |
371 ms |
30348 KB |
Output is correct |
64 |
Correct |
811 ms |
30904 KB |
Output is correct |
65 |
Correct |
1170 ms |
49060 KB |
Output is correct |
66 |
Correct |
893 ms |
52508 KB |
Output is correct |
67 |
Correct |
1215 ms |
52552 KB |
Output is correct |
68 |
Correct |
424 ms |
52296 KB |
Output is correct |
69 |
Correct |
414 ms |
52384 KB |
Output is correct |
70 |
Correct |
395 ms |
52432 KB |
Output is correct |
71 |
Correct |
442 ms |
52536 KB |
Output is correct |
72 |
Correct |
682 ms |
52632 KB |
Output is correct |
73 |
Correct |
844 ms |
52464 KB |
Output is correct |
74 |
Correct |
895 ms |
52440 KB |
Output is correct |
75 |
Correct |
1068 ms |
52544 KB |
Output is correct |
76 |
Correct |
184 ms |
16204 KB |
Output is correct |
77 |
Correct |
224 ms |
16580 KB |
Output is correct |
78 |
Correct |
281 ms |
17212 KB |
Output is correct |
79 |
Correct |
637 ms |
38368 KB |
Output is correct |
80 |
Correct |
616 ms |
38396 KB |
Output is correct |
81 |
Correct |
707 ms |
38460 KB |
Output is correct |
82 |
Correct |
288 ms |
38428 KB |
Output is correct |
83 |
Correct |
287 ms |
38476 KB |
Output is correct |
84 |
Correct |
303 ms |
38232 KB |
Output is correct |
85 |
Correct |
449 ms |
38380 KB |
Output is correct |
86 |
Correct |
610 ms |
38404 KB |
Output is correct |
87 |
Correct |
567 ms |
38456 KB |
Output is correct |
88 |
Correct |
841 ms |
30704 KB |
Output is correct |
89 |
Correct |
1205 ms |
51340 KB |
Output is correct |
90 |
Correct |
675 ms |
30308 KB |
Output is correct |
91 |
Correct |
731 ms |
39776 KB |
Output is correct |
92 |
Correct |
216 ms |
17240 KB |
Output is correct |
93 |
Correct |
289 ms |
17176 KB |
Output is correct |
94 |
Correct |
560 ms |
31444 KB |
Output is correct |
95 |
Correct |
1080 ms |
52444 KB |
Output is correct |
96 |
Correct |
1018 ms |
50952 KB |
Output is correct |
97 |
Correct |
891 ms |
44932 KB |
Output is correct |
98 |
Correct |
746 ms |
39996 KB |
Output is correct |
99 |
Correct |
735 ms |
38524 KB |
Output is correct |
100 |
Correct |
720 ms |
38520 KB |
Output is correct |
101 |
Correct |
370 ms |
48128 KB |
Output is correct |
102 |
Correct |
324 ms |
39936 KB |
Output is correct |
103 |
Correct |
366 ms |
38712 KB |
Output is correct |
104 |
Correct |
375 ms |
38540 KB |
Output is correct |
105 |
Correct |
430 ms |
38392 KB |
Output is correct |
106 |
Correct |
574 ms |
52436 KB |
Output is correct |
107 |
Correct |
639 ms |
51320 KB |
Output is correct |
108 |
Correct |
642 ms |
41736 KB |
Output is correct |
109 |
Correct |
838 ms |
52448 KB |
Output is correct |
110 |
Correct |
742 ms |
43356 KB |
Output is correct |
111 |
Correct |
703 ms |
40500 KB |
Output is correct |
112 |
Correct |
484 ms |
40884 KB |
Output is correct |
113 |
Correct |
639 ms |
38480 KB |
Output is correct |
114 |
Correct |
626 ms |
38392 KB |
Output is correct |
115 |
Correct |
292 ms |
38372 KB |
Output is correct |
116 |
Correct |
295 ms |
38456 KB |
Output is correct |
117 |
Correct |
316 ms |
38428 KB |
Output is correct |
118 |
Correct |
318 ms |
38520 KB |
Output is correct |
119 |
Correct |
441 ms |
38384 KB |
Output is correct |
120 |
Correct |
462 ms |
38392 KB |
Output is correct |