Guest User

c0der_

a guest
Nov 2nd, 2016
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1. // c0der_ on hackerrank and fnf on codeforces
  2.  
  3. #include <cmath>
  4. #include <cstdio>
  5. #include <vector>
  6. #include <iostream>
  7. #include <algorithm>
  8. #include <map>
  9. using namespace std;
  10.  
  11. int a[1000006];
  12. int d[1000006];
  13. int b[1000006];
  14. int c[1000006];
  15.  
  16. map<int,int>m,r;
  17.  
  18. int main() {
  19.     /* Enter your code here. Read input from STDIN. Print output to STDOUT */  
  20.     int n;cin>>n;
  21.     for(int i=0;i<n;i++)
  22.         {
  23.           cin>>a[i];
  24.         b[i]=a[i];
  25.         c[i]=a[i];
  26.          m[a[i]]=i;
  27.           r[a[i]]=i;
  28.           d[i]=a[i];
  29.     }
  30.     sort(b,b+n);sort(c,c+n);
  31.     reverse(c,c+n);
  32.  
  33.     int res=0;
  34.     for(int i=0;i<n;i++)
  35.         {
  36.          if(a[i]!=b[i])
  37.              {
  38.                   res++;
  39.              int x=m[b[i]];
  40.              int p=a[i];
  41.              swap(a[i],a[m[b[i]]]);
  42.              m[p]=x;
  43.              m[b[i]]=i;
  44.          }
  45.     }
  46.  
  47.     int res1=0;
  48.     for(int i=0;i<n;i++)
  49.         {
  50.          if(d[i]!=c[i])
  51.              {
  52.                   res1++;
  53.              int x=r[c[i]];
  54.              int p=d[i];
  55.              swap(d[i],d[r[c[i]]]);
  56.              r[p]=x;
  57.              r[c[i]]=i;
  58.          }
  59.     }
  60.     cout<<min(res,res1)<<endl;
  61.     return 0;
  62. }
Add Comment
Please, Sign In to add comment