fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define endl '\n'
  5. #define int long long
  6.  
  7. const int N = 2e5, oo = 2e18, MOD = 1e9+7;
  8.  
  9.  
  10. void solve() {
  11. int n, m; cin >> n >> m;
  12. vector<int> a(n);
  13. for (int i = 0; i < n; i++) {
  14. cin >> a[i];
  15. }
  16. vector<int> b(m);
  17. for (int i = 0; i < n; i++) {
  18. cin >> b[i];
  19. }
  20. b.push_back(n);
  21. reverse(b.begin(), b.end());
  22.  
  23. vector<set<int>> st;
  24. int ans = 0;
  25. set<int> cur;
  26. for (int i = 0; i <= n; i++) {
  27. if (i == b.back()) {
  28. ans += cur.size();
  29. st.push_back(cur);
  30. cur.clear();
  31. b.pop_back();
  32. }
  33. if (i < n)
  34. cur.insert(a[i]);
  35. }
  36. int res = ans;
  37. int s = st.size();
  38. for (int i = 0; i < s - 1; i++) {
  39. set<int> have;
  40. for (int j : st[i]) have.insert(j);
  41. for (int j : st[i + 1]) have.insert(j);
  42. res = min(res, (int)(ans - st[i].size() - st[i + 1].size() + have.size()));
  43. }
  44. cout << res;
  45. }
  46.  
  47.  
  48. signed main() {
  49. ios_base::sync_with_stdio(false);
  50. cin.tie(NULL); cout.tie(NULL);
  51. // #ifndef ONLINE_JUDGE
  52. // freopen("input.txt", "r", stdin);
  53. // freopen("output.txt", "w", stdout);
  54. // #endif
  55. int t; t = 1;
  56. // cin >> t;
  57. while (t--) solve();
  58. return 0;
  59. }
  60.  
Success #stdin #stdout 0.01s 5272KB
stdin
Standard input is empty
stdout
Standard output is empty