Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- const int N = 100;
- void FLIP(int n, int v[], int i, int j)
- {
- while(i < j)
- {
- int aux = v[i];
- v[i] = v[j];
- v[j] = aux;
- i++;
- j--;
- }
- }
- int n, i, j, v[100];
- int main()
- {
- cin>>n;
- for(i=1;i<=n;i++)
- cin>>v[i];
- for(i=n; i>1; i--)
- {
- // caut maximul in intervalul 0 ... i
- int imaxim = 1;
- for(j=2;j<=i;j++)
- if(v[j] > v[imaxim])
- imaxim = j;
- // elementul maxim este pe pozitia corecta
- if(imaxim == i)
- continue;
- // aduc maximul pe prima pozitie
- if(imaxim != 1)
- FLIP(n, v, 1, imaxim);
- // aduc maximul pe ultima pozitie
- FLIP(n, v, 1, i);
- }
- for(i=1;i<=n;i++)
- cout<<v[i]<<' ';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement