euler_1998

Untitled

Aug 26th, 2017
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.88 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define fr(i,a,b) for(ll i=a;i <= b;i++)
  5. #define fd(i,a,b) for(ll i=a;i >= b;i--)
  6. #define rep(i,n) for(ll i=0;i < n;i++)
  7. #define fast_io ios_base::sync_with_stdio(0);
  8. #define sz(x) x.size()
  9.  
  10. int main() {
  11.     fast_io;
  12.     // ll t; cin >> t;
  13.     // rep(q,t) {
  14.         // ll n,ind; cin >> n >> ind;
  15.         ll n; cin >> n;
  16.        
  17.         ll a[1 << n];
  18.         fr(i,0,(1 << n)-1) a[i] = i;
  19.         fr(i,0,n-1) {
  20.             ll k = 0,l = k+(1 << (n-i))-1;
  21.    
  22.             while(k != (1 << n)) {
  23.                 ll mid = (k+l)/2;
  24.                 ll b[l-k+1];
  25.                 ll j = k;
  26.                 fr(p,k,mid) {
  27.                     b[p-k] = a[j];
  28.                     j += 2;
  29.                 }
  30.                 j = k+1;
  31.                 fr(p,mid+1,l) {
  32.                     b[p-k] = a[j];
  33.                     j += 2;
  34.                 }
  35.                 fr(p,0,l-k) a[p+k] = b[p];
  36.                 k += ((1 << (n-i))); l += ((1 << (n-i)));
  37.             }
  38.         }
  39.         // cout << a[ind] << endl;
  40.         fr(i,0,(1 << n)-1) cout << a[i] << " ";
  41.         cout << endl;
  42.     // }
  43. }
Add Comment
Please, Sign In to add comment