Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <bits/stdc++.h>
- #include <map>
- #define pb push_back
- #define ll long long
- using namespace std;
- int n,q,start,finish,sol,maxim,sz;
- int a[200010],lft[200010],rgt[200010];
- vector < pair<int,int> > v,d;
- int main()
- {
- cin>>n>>q;
- int i,j;
- for(i=1;i<=n;i++){
- cin>>a[i];
- if(lft[a[i]])
- rgt[a[i]]=i;
- else
- lft[a[i]]=i;
- }
- for(i=1;i<=200000;i++)
- {
- if(lft[i])
- v.push_back({lft[i],rgt[i]});
- }
- v.push_back({200010,200010});
- sort(v.begin(),v.end());
- start=v[0].first;
- finish=v[0].second;
- for(i=1;i<v.size();i++)
- {
- if(v[i].first<=finish)
- finish=max(finish,v[i].second);
- else
- {
- d.push_back({start,finish});
- start=v[i].first;
- finish=v[i].second;
- }
- }
- for(i=0;i<d.size();i++)
- {
- map <int,int> mp;
- for(j=d[i].first;j<=d[i].second;j++)
- mp[a[j]]++;
- maxim=0;
- sz=d[i].second-d[i].first+1;
- for(auto it: mp)
- maxim=max(maxim,it.second);
- sol+=sz-maxim;
- }
- cout<<sol;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement