fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using ll = long long int;
  4. #define inf 1000000000000000LL
  5. #define mod 1000000007LL
  6. #define FOR(i,a,b) for(int i = a; i < b; i++)
  7.  
  8. void solve() {
  9. ll n,k;
  10. cin >> n >> k;
  11. vector <ll> l1(n);
  12. ll cnt = 0;
  13. FOR(i,0,n){
  14. cin >> l1[i];
  15. cnt += (i >= 1 ? l1[i] != l1[i-1] : 0);
  16. }
  17. deque <ll> spec;
  18. vector <bool> good(n, false);
  19. for (int i = 0; i < k; i++){
  20. ll a;
  21. cin >> a;
  22. spec.push_back(a-1);
  23. good[a-1] = true;
  24. }
  25. ll x = l1[spec[0]];
  26. cnt += (l1[0] != x) + (l1[n-1] != x);
  27.  
  28. ll v = (l1[0] != x);
  29. ll max_val = v;
  30. for (int i = 0; i < n; i++){
  31. if (good[i]) v = 0;
  32. if (i < n-1){
  33. v += l1[i] != l1[i+1];
  34. max_val = max(max_val, v);
  35. }
  36. }
  37. v += l1[n-1] != x;
  38. max_val = max(max_val, v);
  39.  
  40. cout << max(cnt / 2, max_val) << "\n";
  41. }
  42.  
  43. int main() {
  44. // ios::sync_with_stdio(false);
  45. // cin.tie(nullptr);
  46.  
  47. ll t = 1;
  48. cin >> t;
  49. while (t--) {
  50. solve();
  51. }
  52.  
  53. return 0;
  54. }
Runtime error #stdin #stdout 0.04s 5292KB
stdin
Standard input is empty
stdout
Standard output is empty