Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <bits/stdc++.h>
  4. #include <map>
  5. #define pb push_back
  6. #define ll long long
  7. using namespace std;
  8. int n,q,start,finish,sol,maxim,sz;
  9. int a[200010],lft[200010],rgt[200010];
  10. vector < pair<int,int> > v,d;
  11. int main()
  12. {
  13. cin>>n>>q;
  14. int i,j;
  15. for(i=1;i<=n;i++){
  16. cin>>a[i];
  17. if(lft[a[i]])
  18. rgt[a[i]]=i;
  19. else
  20. lft[a[i]]=i;
  21. }
  22. for(i=1;i<=200000;i++)
  23. {
  24. if(lft[i])
  25. v.push_back({lft[i],rgt[i]});
  26. }
  27. v.push_back({200010,200010});
  28. sort(v.begin(),v.end());
  29. start=v[0].first;
  30. finish=v[0].second;
  31. for(i=1;i<v.size();i++)
  32. {
  33. if(v[i].first<=finish)
  34. finish=max(finish,v[i].second);
  35. else
  36. {
  37. d.push_back({start,finish});
  38. start=v[i].first;
  39. finish=v[i].second;
  40. }
  41. }
  42. for(i=0;i<d.size();i++)
  43. {
  44. map <int,int> mp;
  45. for(j=d[i].first;j<=d[i].second;j++)
  46. mp[a[j]]++;
  47. maxim=0;
  48. sz=d[i].second-d[i].first+1;
  49. for(auto it: mp)
  50. maxim=max(maxim,it.second);
  51. sol+=sz-maxim;
  52. }
  53. cout<<sol;
  54. return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement