提交时间:2025-06-10 16:14:52

运行 ID: 38040

#include <bits/stdc++.h> using namespace std; const int N = 1005; int n, m; int a[N], b[N]; int f[N][N], g[N]; int main() { cin >> n >> m; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i <= m; i++) cin >> b[i]; sort(b + 1, b + m + 1); memset(f, 0x3f, sizeof(f)); memset(g, 0x3f, sizeof(g)); f[0][0] = g[0] = 0; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { f[i][j] = f[i - 1][j - 1] + 1; if (b[j] >= a[i - 1]) f[i][j] = min(f[i][j], g[i - 1] + 1); if (b[j] == a[i]) f[i][j] = min(f[i][j], f[i - 1][j]); } for (int j = 1; j <= m; j++) { if (b[j] >= a[i]) break; g[i] = min(g[i], f[i - 1][j]); } if (a[i] >= a[i - 1]) g[i] = min(g[i], g[i - 1]); } int ans = g[n]; for (int i = 1; i <= m; i++) ans = min(ans, f[n][i]); if (ans > 1e9) cout << -1; else cout << ans; return 0; }