Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // c0der_ on hackerrank and fnf on codeforces
- #include <cmath>
- #include <cstdio>
- #include <vector>
- #include <iostream>
- #include <algorithm>
- #include <map>
- using namespace std;
- int a[1000006];
- int d[1000006];
- int b[1000006];
- int c[1000006];
- map<int,int>m,r;
- int main() {
- /* Enter your code here. Read input from STDIN. Print output to STDOUT */
- int n;cin>>n;
- for(int i=0;i<n;i++)
- {
- cin>>a[i];
- b[i]=a[i];
- c[i]=a[i];
- m[a[i]]=i;
- r[a[i]]=i;
- d[i]=a[i];
- }
- sort(b,b+n);sort(c,c+n);
- reverse(c,c+n);
- int res=0;
- for(int i=0;i<n;i++)
- {
- if(a[i]!=b[i])
- {
- res++;
- int x=m[b[i]];
- int p=a[i];
- swap(a[i],a[m[b[i]]]);
- m[p]=x;
- m[b[i]]=i;
- }
- }
- int res1=0;
- for(int i=0;i<n;i++)
- {
- if(d[i]!=c[i])
- {
- res1++;
- int x=r[c[i]];
- int p=d[i];
- swap(d[i],d[r[c[i]]]);
- r[p]=x;
- r[c[i]]=i;
- }
- }
- cout<<min(res,res1)<<endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment