#define ll loli
#pragma GCC optimize("Ofast,unroll-loops")
#include<bits/stdc++.h>
#define pb push_back
#define eb emplace_back
#define push emplace
#define sz(x) (int)(x.size())
#define re(x) reverse(all(x))
#define uni(x) x.resize(unique(all(x)) - x.begin())
#define all(x) x.begin(), x.end()
#define mem(x, v) memset(x, v, sizeof x);
#define pii pair<int, int>
#define inf 1e9
#define INF 1e18
#define mod 1000000007
#define F first
#define S second
#define IO ios_base::sync_with_stdio(0); cin.tie(0);
using namespace std;
const int mxN = 3e5 + 5;
int n, d, a[mxN], dp[mxN], dead[mxN];
priority_queue<pii> pq[mxN], check;
struct BIT{
int b[mxN];
inline int qry(int i) {
int res = 0;
for (; i > 0; i -= (i&-i)) res = max(res, b[i]);
return res;
}
inline void upd(int i, int v) {
for (; i <= n; i += (i&-i)) b[i] = max(b[i], v);
}
} bit;
#define ls x<<1
#define rs x<<1|1
#define mid ((l+r)>>1)
int seg[mxN * 4];
inline void up(int x) {
seg[x] = max(seg[ls], seg[rs]);
}
void modify(int p, int v, int l = 1, int r = n, int x = 1) {
if(l == r) {
seg[x] = v;
return;
}
if(p <= mid) modify(p, v, l, mid, ls);
else modify(p, v, mid+1, r, rs);
up(x);
}
int query(int a, int b, int l = 1, int r = n, int x = 1) {
if(a <= l and r <= b) return seg[x];
int res = 0;
if(a <= mid) res = query(a, b, l, mid, ls);
if(b > mid) res = max(res, query(a, b, mid+1, r, rs));
return res;
}
signed main() {
IO;
cin >> n >> d;
vector<int> tmp;
for (int i = 1; i <= n; i++) cin >> a[i], tmp.eb(a[i]), pq[i].push(0, inf);
sort(all(tmp));
uni(tmp);
for (int i = 1; i <= n; i++) a[i] = lower_bound(all(tmp), a[i]) - tmp.begin() + 1;
tmp.clear();
int ans = 0;
deque<int> dq;
for (int i = 1; i <= n; i++) {
if (i > d + 1) {
check.push(-a[i - d - 1], - (i - d - 1));
while (!check.empty()) {
auto [aa, id] = check.top(); aa = -aa; id = -id;
int exp = bit.qry(aa);
if (exp >= i) break;
check.pop();
dead[aa] = i - d;
while (pq[aa].top().S < dead[aa]) pq[aa].pop();
modify(aa, pq[aa].top().F);
}
}
if (a[i] == 1) dp[i] = 1;
else dp[i] = query(1, a[i] - 1) + 1;
bit.upd(a[i], i + d);
if (pq[a[i]].top().F < dp[i]) modify(a[i], dp[i]);
pq[a[i]].push(dp[i], i);
ans = max(ans, dp[i]);
}
cout << ans << '\n';
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
6 ms |
9676 KB |
Output is correct |
2 |
Correct |
6 ms |
9676 KB |
Output is correct |
3 |
Correct |
7 ms |
9676 KB |
Output is correct |
4 |
Correct |
6 ms |
9732 KB |
Output is correct |
5 |
Correct |
6 ms |
9728 KB |
Output is correct |
6 |
Correct |
6 ms |
9724 KB |
Output is correct |
7 |
Correct |
7 ms |
9728 KB |
Output is correct |
8 |
Correct |
7 ms |
9676 KB |
Output is correct |
9 |
Correct |
7 ms |
9720 KB |
Output is correct |
10 |
Correct |
6 ms |
9652 KB |
Output is correct |
11 |
Correct |
6 ms |
9676 KB |
Output is correct |
12 |
Correct |
7 ms |
9680 KB |
Output is correct |
13 |
Correct |
7 ms |
9724 KB |
Output is correct |
14 |
Correct |
6 ms |
9676 KB |
Output is correct |
15 |
Correct |
7 ms |
9704 KB |
Output is correct |
16 |
Correct |
7 ms |
9680 KB |
Output is correct |
17 |
Correct |
6 ms |
9724 KB |
Output is correct |
18 |
Correct |
7 ms |
9680 KB |
Output is correct |
19 |
Correct |
6 ms |
9676 KB |
Output is correct |
20 |
Correct |
7 ms |
9676 KB |
Output is correct |
21 |
Correct |
7 ms |
9676 KB |
Output is correct |
22 |
Correct |
6 ms |
9672 KB |
Output is correct |
23 |
Correct |
6 ms |
9676 KB |
Output is correct |
24 |
Correct |
6 ms |
9676 KB |
Output is correct |
25 |
Correct |
7 ms |
9688 KB |
Output is correct |
26 |
Correct |
7 ms |
9724 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
6 ms |
9676 KB |
Output is correct |
2 |
Correct |
6 ms |
9676 KB |
Output is correct |
3 |
Correct |
7 ms |
9676 KB |
Output is correct |
4 |
Correct |
6 ms |
9732 KB |
Output is correct |
5 |
Correct |
6 ms |
9728 KB |
Output is correct |
6 |
Correct |
6 ms |
9724 KB |
Output is correct |
7 |
Correct |
7 ms |
9728 KB |
Output is correct |
8 |
Correct |
7 ms |
9676 KB |
Output is correct |
9 |
Correct |
7 ms |
9720 KB |
Output is correct |
10 |
Correct |
6 ms |
9652 KB |
Output is correct |
11 |
Correct |
6 ms |
9676 KB |
Output is correct |
12 |
Correct |
7 ms |
9680 KB |
Output is correct |
13 |
Correct |
7 ms |
9724 KB |
Output is correct |
14 |
Correct |
6 ms |
9676 KB |
Output is correct |
15 |
Correct |
7 ms |
9704 KB |
Output is correct |
16 |
Correct |
7 ms |
9680 KB |
Output is correct |
17 |
Correct |
6 ms |
9724 KB |
Output is correct |
18 |
Correct |
7 ms |
9680 KB |
Output is correct |
19 |
Correct |
6 ms |
9676 KB |
Output is correct |
20 |
Correct |
7 ms |
9676 KB |
Output is correct |
21 |
Correct |
7 ms |
9676 KB |
Output is correct |
22 |
Correct |
6 ms |
9672 KB |
Output is correct |
23 |
Correct |
6 ms |
9676 KB |
Output is correct |
24 |
Correct |
6 ms |
9676 KB |
Output is correct |
25 |
Correct |
7 ms |
9688 KB |
Output is correct |
26 |
Correct |
7 ms |
9724 KB |
Output is correct |
27 |
Correct |
7 ms |
9728 KB |
Output is correct |
28 |
Correct |
7 ms |
9676 KB |
Output is correct |
29 |
Correct |
7 ms |
9676 KB |
Output is correct |
30 |
Correct |
7 ms |
9724 KB |
Output is correct |
31 |
Correct |
9 ms |
9728 KB |
Output is correct |
32 |
Correct |
7 ms |
9676 KB |
Output is correct |
33 |
Correct |
7 ms |
9676 KB |
Output is correct |
34 |
Correct |
7 ms |
9676 KB |
Output is correct |
35 |
Correct |
8 ms |
9724 KB |
Output is correct |
36 |
Correct |
7 ms |
9676 KB |
Output is correct |
37 |
Correct |
7 ms |
9676 KB |
Output is correct |
38 |
Correct |
7 ms |
9676 KB |
Output is correct |
39 |
Correct |
7 ms |
9728 KB |
Output is correct |
40 |
Correct |
7 ms |
9676 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
6 ms |
9676 KB |
Output is correct |
2 |
Correct |
6 ms |
9676 KB |
Output is correct |
3 |
Correct |
7 ms |
9676 KB |
Output is correct |
4 |
Correct |
6 ms |
9732 KB |
Output is correct |
5 |
Correct |
6 ms |
9728 KB |
Output is correct |
6 |
Correct |
6 ms |
9724 KB |
Output is correct |
7 |
Correct |
7 ms |
9728 KB |
Output is correct |
8 |
Correct |
7 ms |
9676 KB |
Output is correct |
9 |
Correct |
7 ms |
9720 KB |
Output is correct |
10 |
Correct |
6 ms |
9652 KB |
Output is correct |
11 |
Correct |
6 ms |
9676 KB |
Output is correct |
12 |
Correct |
7 ms |
9680 KB |
Output is correct |
13 |
Correct |
7 ms |
9724 KB |
Output is correct |
14 |
Correct |
6 ms |
9676 KB |
Output is correct |
15 |
Correct |
7 ms |
9704 KB |
Output is correct |
16 |
Correct |
7 ms |
9680 KB |
Output is correct |
17 |
Correct |
6 ms |
9724 KB |
Output is correct |
18 |
Correct |
7 ms |
9680 KB |
Output is correct |
19 |
Correct |
6 ms |
9676 KB |
Output is correct |
20 |
Correct |
7 ms |
9676 KB |
Output is correct |
21 |
Correct |
7 ms |
9676 KB |
Output is correct |
22 |
Correct |
6 ms |
9672 KB |
Output is correct |
23 |
Correct |
6 ms |
9676 KB |
Output is correct |
24 |
Correct |
6 ms |
9676 KB |
Output is correct |
25 |
Correct |
7 ms |
9688 KB |
Output is correct |
26 |
Correct |
7 ms |
9724 KB |
Output is correct |
27 |
Correct |
7 ms |
9728 KB |
Output is correct |
28 |
Correct |
7 ms |
9676 KB |
Output is correct |
29 |
Correct |
7 ms |
9676 KB |
Output is correct |
30 |
Correct |
7 ms |
9724 KB |
Output is correct |
31 |
Correct |
9 ms |
9728 KB |
Output is correct |
32 |
Correct |
7 ms |
9676 KB |
Output is correct |
33 |
Correct |
7 ms |
9676 KB |
Output is correct |
34 |
Correct |
7 ms |
9676 KB |
Output is correct |
35 |
Correct |
8 ms |
9724 KB |
Output is correct |
36 |
Correct |
7 ms |
9676 KB |
Output is correct |
37 |
Correct |
7 ms |
9676 KB |
Output is correct |
38 |
Correct |
7 ms |
9676 KB |
Output is correct |
39 |
Correct |
7 ms |
9728 KB |
Output is correct |
40 |
Correct |
7 ms |
9676 KB |
Output is correct |
41 |
Correct |
15 ms |
10136 KB |
Output is correct |
42 |
Correct |
13 ms |
10120 KB |
Output is correct |
43 |
Correct |
11 ms |
10188 KB |
Output is correct |
44 |
Correct |
11 ms |
10188 KB |
Output is correct |
45 |
Correct |
11 ms |
10252 KB |
Output is correct |
46 |
Correct |
11 ms |
10188 KB |
Output is correct |
47 |
Correct |
13 ms |
10128 KB |
Output is correct |
48 |
Correct |
12 ms |
10188 KB |
Output is correct |
49 |
Correct |
12 ms |
10188 KB |
Output is correct |
50 |
Correct |
12 ms |
10188 KB |
Output is correct |
51 |
Correct |
12 ms |
10192 KB |
Output is correct |
52 |
Correct |
13 ms |
10220 KB |
Output is correct |
53 |
Correct |
11 ms |
10188 KB |
Output is correct |
54 |
Correct |
11 ms |
10120 KB |
Output is correct |
55 |
Correct |
11 ms |
10248 KB |
Output is correct |
56 |
Correct |
11 ms |
10316 KB |
Output is correct |
57 |
Correct |
12 ms |
10264 KB |
Output is correct |
58 |
Correct |
10 ms |
10188 KB |
Output is correct |
59 |
Correct |
11 ms |
10092 KB |
Output is correct |
60 |
Correct |
12 ms |
10188 KB |
Output is correct |
61 |
Correct |
13 ms |
10188 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
111 ms |
33808 KB |
Output is correct |
2 |
Correct |
207 ms |
26676 KB |
Output is correct |
3 |
Correct |
236 ms |
25704 KB |
Output is correct |
4 |
Correct |
462 ms |
31024 KB |
Output is correct |
5 |
Correct |
379 ms |
31908 KB |
Output is correct |
6 |
Correct |
497 ms |
31952 KB |
Output is correct |
7 |
Correct |
216 ms |
31892 KB |
Output is correct |
8 |
Correct |
197 ms |
34236 KB |
Output is correct |
9 |
Correct |
227 ms |
31916 KB |
Output is correct |
10 |
Correct |
228 ms |
34348 KB |
Output is correct |
11 |
Correct |
337 ms |
31988 KB |
Output is correct |
12 |
Correct |
382 ms |
31856 KB |
Output is correct |
13 |
Correct |
396 ms |
31988 KB |
Output is correct |
14 |
Correct |
481 ms |
31984 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
116 ms |
30156 KB |
Output is correct |
2 |
Correct |
155 ms |
28560 KB |
Output is correct |
3 |
Correct |
222 ms |
29628 KB |
Output is correct |
4 |
Correct |
397 ms |
30804 KB |
Output is correct |
5 |
Correct |
318 ms |
30764 KB |
Output is correct |
6 |
Correct |
403 ms |
30780 KB |
Output is correct |
7 |
Correct |
172 ms |
30768 KB |
Output is correct |
8 |
Correct |
175 ms |
30768 KB |
Output is correct |
9 |
Correct |
187 ms |
30600 KB |
Output is correct |
10 |
Correct |
281 ms |
30720 KB |
Output is correct |
11 |
Correct |
351 ms |
30768 KB |
Output is correct |
12 |
Correct |
312 ms |
30728 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
6 ms |
9676 KB |
Output is correct |
2 |
Correct |
6 ms |
9676 KB |
Output is correct |
3 |
Correct |
7 ms |
9676 KB |
Output is correct |
4 |
Correct |
6 ms |
9732 KB |
Output is correct |
5 |
Correct |
6 ms |
9728 KB |
Output is correct |
6 |
Correct |
6 ms |
9724 KB |
Output is correct |
7 |
Correct |
7 ms |
9728 KB |
Output is correct |
8 |
Correct |
7 ms |
9676 KB |
Output is correct |
9 |
Correct |
7 ms |
9720 KB |
Output is correct |
10 |
Correct |
6 ms |
9652 KB |
Output is correct |
11 |
Correct |
6 ms |
9676 KB |
Output is correct |
12 |
Correct |
7 ms |
9680 KB |
Output is correct |
13 |
Correct |
7 ms |
9724 KB |
Output is correct |
14 |
Correct |
6 ms |
9676 KB |
Output is correct |
15 |
Correct |
7 ms |
9704 KB |
Output is correct |
16 |
Correct |
7 ms |
9680 KB |
Output is correct |
17 |
Correct |
6 ms |
9724 KB |
Output is correct |
18 |
Correct |
7 ms |
9680 KB |
Output is correct |
19 |
Correct |
6 ms |
9676 KB |
Output is correct |
20 |
Correct |
7 ms |
9676 KB |
Output is correct |
21 |
Correct |
7 ms |
9676 KB |
Output is correct |
22 |
Correct |
6 ms |
9672 KB |
Output is correct |
23 |
Correct |
6 ms |
9676 KB |
Output is correct |
24 |
Correct |
6 ms |
9676 KB |
Output is correct |
25 |
Correct |
7 ms |
9688 KB |
Output is correct |
26 |
Correct |
7 ms |
9724 KB |
Output is correct |
27 |
Correct |
7 ms |
9728 KB |
Output is correct |
28 |
Correct |
7 ms |
9676 KB |
Output is correct |
29 |
Correct |
7 ms |
9676 KB |
Output is correct |
30 |
Correct |
7 ms |
9724 KB |
Output is correct |
31 |
Correct |
9 ms |
9728 KB |
Output is correct |
32 |
Correct |
7 ms |
9676 KB |
Output is correct |
33 |
Correct |
7 ms |
9676 KB |
Output is correct |
34 |
Correct |
7 ms |
9676 KB |
Output is correct |
35 |
Correct |
8 ms |
9724 KB |
Output is correct |
36 |
Correct |
7 ms |
9676 KB |
Output is correct |
37 |
Correct |
7 ms |
9676 KB |
Output is correct |
38 |
Correct |
7 ms |
9676 KB |
Output is correct |
39 |
Correct |
7 ms |
9728 KB |
Output is correct |
40 |
Correct |
7 ms |
9676 KB |
Output is correct |
41 |
Correct |
15 ms |
10136 KB |
Output is correct |
42 |
Correct |
13 ms |
10120 KB |
Output is correct |
43 |
Correct |
11 ms |
10188 KB |
Output is correct |
44 |
Correct |
11 ms |
10188 KB |
Output is correct |
45 |
Correct |
11 ms |
10252 KB |
Output is correct |
46 |
Correct |
11 ms |
10188 KB |
Output is correct |
47 |
Correct |
13 ms |
10128 KB |
Output is correct |
48 |
Correct |
12 ms |
10188 KB |
Output is correct |
49 |
Correct |
12 ms |
10188 KB |
Output is correct |
50 |
Correct |
12 ms |
10188 KB |
Output is correct |
51 |
Correct |
12 ms |
10192 KB |
Output is correct |
52 |
Correct |
13 ms |
10220 KB |
Output is correct |
53 |
Correct |
11 ms |
10188 KB |
Output is correct |
54 |
Correct |
11 ms |
10120 KB |
Output is correct |
55 |
Correct |
11 ms |
10248 KB |
Output is correct |
56 |
Correct |
11 ms |
10316 KB |
Output is correct |
57 |
Correct |
12 ms |
10264 KB |
Output is correct |
58 |
Correct |
10 ms |
10188 KB |
Output is correct |
59 |
Correct |
11 ms |
10092 KB |
Output is correct |
60 |
Correct |
12 ms |
10188 KB |
Output is correct |
61 |
Correct |
13 ms |
10188 KB |
Output is correct |
62 |
Correct |
111 ms |
33808 KB |
Output is correct |
63 |
Correct |
207 ms |
26676 KB |
Output is correct |
64 |
Correct |
236 ms |
25704 KB |
Output is correct |
65 |
Correct |
462 ms |
31024 KB |
Output is correct |
66 |
Correct |
379 ms |
31908 KB |
Output is correct |
67 |
Correct |
497 ms |
31952 KB |
Output is correct |
68 |
Correct |
216 ms |
31892 KB |
Output is correct |
69 |
Correct |
197 ms |
34236 KB |
Output is correct |
70 |
Correct |
227 ms |
31916 KB |
Output is correct |
71 |
Correct |
228 ms |
34348 KB |
Output is correct |
72 |
Correct |
337 ms |
31988 KB |
Output is correct |
73 |
Correct |
382 ms |
31856 KB |
Output is correct |
74 |
Correct |
396 ms |
31988 KB |
Output is correct |
75 |
Correct |
481 ms |
31984 KB |
Output is correct |
76 |
Correct |
116 ms |
30156 KB |
Output is correct |
77 |
Correct |
155 ms |
28560 KB |
Output is correct |
78 |
Correct |
222 ms |
29628 KB |
Output is correct |
79 |
Correct |
397 ms |
30804 KB |
Output is correct |
80 |
Correct |
318 ms |
30764 KB |
Output is correct |
81 |
Correct |
403 ms |
30780 KB |
Output is correct |
82 |
Correct |
172 ms |
30768 KB |
Output is correct |
83 |
Correct |
175 ms |
30768 KB |
Output is correct |
84 |
Correct |
187 ms |
30600 KB |
Output is correct |
85 |
Correct |
281 ms |
30720 KB |
Output is correct |
86 |
Correct |
351 ms |
30768 KB |
Output is correct |
87 |
Correct |
312 ms |
30728 KB |
Output is correct |
88 |
Correct |
263 ms |
25672 KB |
Output is correct |
89 |
Correct |
495 ms |
31868 KB |
Output is correct |
90 |
Correct |
340 ms |
28872 KB |
Output is correct |
91 |
Correct |
431 ms |
35312 KB |
Output is correct |
92 |
Correct |
164 ms |
32048 KB |
Output is correct |
93 |
Correct |
239 ms |
33060 KB |
Output is correct |
94 |
Correct |
356 ms |
32948 KB |
Output is correct |
95 |
Correct |
441 ms |
32004 KB |
Output is correct |
96 |
Correct |
476 ms |
32820 KB |
Output is correct |
97 |
Correct |
537 ms |
33780 KB |
Output is correct |
98 |
Correct |
420 ms |
35240 KB |
Output is correct |
99 |
Correct |
438 ms |
35032 KB |
Output is correct |
100 |
Correct |
427 ms |
34980 KB |
Output is correct |
101 |
Correct |
233 ms |
31972 KB |
Output is correct |
102 |
Correct |
259 ms |
31972 KB |
Output is correct |
103 |
Correct |
303 ms |
31920 KB |
Output is correct |
104 |
Correct |
328 ms |
32116 KB |
Output is correct |
105 |
Correct |
362 ms |
33200 KB |
Output is correct |
106 |
Correct |
274 ms |
35652 KB |
Output is correct |
107 |
Correct |
288 ms |
35836 KB |
Output is correct |
108 |
Correct |
374 ms |
34992 KB |
Output is correct |
109 |
Correct |
390 ms |
32088 KB |
Output is correct |
110 |
Correct |
422 ms |
33996 KB |
Output is correct |
111 |
Correct |
403 ms |
33404 KB |
Output is correct |
112 |
Correct |
318 ms |
33456 KB |
Output is correct |
113 |
Correct |
392 ms |
35060 KB |
Output is correct |
114 |
Correct |
382 ms |
34856 KB |
Output is correct |
115 |
Correct |
184 ms |
30744 KB |
Output is correct |
116 |
Correct |
175 ms |
30712 KB |
Output is correct |
117 |
Correct |
217 ms |
33740 KB |
Output is correct |
118 |
Correct |
216 ms |
33712 KB |
Output is correct |
119 |
Correct |
278 ms |
34880 KB |
Output is correct |
120 |
Correct |
301 ms |
34848 KB |
Output is correct |