Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define N 10001
- using namespace std;
- ifstream fin("date.in");
- ofstream fout("date.out");
- int v[N],n;
- void Flip(int n, int v[], int i, int j)
- {
- int aux;
- while(i<j)
- {
- aux=v[i];
- v[i]=v[j];
- v[j]=aux;
- i++;
- j--;
- }
- }
- void Citire()
- {
- fin>>n;
- for(int i=1; i<=n; i++)fin>>v[i];
- }
- void Afisare()
- {
- for(int i=1; i<=n; i++)fout<<v[i]<<" ";
- fout<<"\n";
- }
- void Cerb()
- {
- int Maxi,k;
- for(int i=n; i>1; i--)
- {
- Maxi=v[i];
- k=i;
- for(int j=i-1; j>=1; j--)
- if(v[j]>Maxi)Maxi=v[j],k=j;
- Flip(n,v,1,k);
- Flip(n,v,1,i);
- }
- }
- void Cerc()
- {
- int m=0,p=1;
- while(p<n)
- {
- p*=2;
- m++;
- }
- for(int i=m;i>=1;i--)
- for(int j=(1<<(m-i));j>=1;j--)
- if(v[(1<<i)*(j-1)+1]>v[(1<<i)*j])
- Flip(n,v,(1<<i)*(j-1)+1,(1<<i)*j);
- }
- int main()
- {
- Citire();
- ///Cerb();
- Cerc();
- Afisare();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement