161942025-04-14 14:45:41zsomborNövekvő Ödön és a Másoló Varázslócpp17Accepted 100/100177ms7100 KiB
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int n, m, ans;
vector <int> a(5e5, 0);
vector <int> b;
vector <int> dp(5e5, 1e9);
vector <int> f(5e5, 1e9);

int gr(int x) {
	return b.end() - lower_bound(b.begin(), b.end(), x);
}

int pos(int k) {
	return n + m - k - gr(a[k]);
}

void update(int k) {
	int x = pos(k);
	for (int i = x; i < f.size(); i = (i | (i + 1))) f[i] = min(f[i], dp[k]);
}

void query(int k) {
	int x = pos(k) + 1;
	for (int i = x; i >= 0; i = (i & (i + 1)) - 1) dp[k] = min(dp[k], f[i]);
	dp[k]--;
	if (gr(a[k]) >= n - k) ans = min(ans, dp[k]);
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cin >> n >> m;
	for (int i = 1; i <= n; i++) cin >> a[i];
	b.resize(m);
	for (int& i : b) cin >> i;
	sort(b.begin(), b.end());
	ans = n;
	dp[0] = n;
	for (int i = 1; i <= n; i++) {
		if (a[i - 1] < a[i]) dp[i] = dp[i - 1];
		query(i);
		update(i - 1);
	}
	cout << ans << "\n";
	/*for (int i = 0; i <= n; i++) cout << pos(i) << " ";
	cout << "\n";
	for (int i = 0; i <= n; i++) cout << dp[i] << " ";*/
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted4ms6196 KiB
2Accepted39ms6452 KiB
subtask25/5
3Accepted52ms6968 KiB
4Accepted52ms6964 KiB
5Accepted52ms6964 KiB
subtask310/10
6Accepted7ms6196 KiB
7Accepted6ms6196 KiB
8Accepted6ms6196 KiB
subtask415/15
9Accepted6ms6196 KiB
10Accepted7ms6196 KiB
11Accepted7ms6140 KiB
12Accepted6ms6196 KiB
subtask55/5
13Accepted8ms6140 KiB
14Accepted8ms6196 KiB
15Accepted8ms6196 KiB
subtask65/5
16Accepted8ms6196 KiB
17Accepted8ms6196 KiB
18Accepted8ms6144 KiB
19Accepted8ms6340 KiB
subtask710/10
20Accepted8ms6196 KiB
21Accepted8ms6196 KiB
22Accepted8ms6196 KiB
23Accepted8ms6284 KiB
24Accepted8ms6196 KiB
subtask825/25
25Accepted61ms6620 KiB
26Accepted63ms6568 KiB
27Accepted63ms6704 KiB
28Accepted6ms6108 KiB
29Accepted86ms6708 KiB
30Accepted63ms6452 KiB
31Accepted63ms6452 KiB
32Accepted61ms6704 KiB
33Accepted64ms6596 KiB
34Accepted64ms6708 KiB
35Accepted68ms6572 KiB
36Accepted61ms6452 KiB
37Accepted63ms6452 KiB
38Accepted68ms6456 KiB
39Accepted87ms6452 KiB
40Accepted68ms6452 KiB
41Accepted67ms6708 KiB
42Accepted39ms6596 KiB
43Accepted61ms6452 KiB
44Accepted61ms6452 KiB
45Accepted64ms6568 KiB
subtask925/25
46Accepted119ms6960 KiB
47Accepted125ms7080 KiB
48Accepted119ms6964 KiB
49Accepted177ms6964 KiB
50Accepted177ms7100 KiB
51Accepted175ms7084 KiB
52Accepted105ms7084 KiB
53Accepted118ms6964 KiB
54Accepted123ms6964 KiB
55Accepted127ms6964 KiB