Submission #1319426

#TimeUsernameProblemLanguageResultExecution timeMemory
1319426discontinuousSwap (BOI16_swap)C++20
0 / 100
0 ms332 KiB
#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define int long long

const int MOD = 1e9 + 7;
const int INF = 1e15;
const int N = 1e6;

int n, m, k, a, b, c, d, h, l, r, q, u, v, x, y;
vector<int> ans;
vector<int> perm;

void rec(int ind) {

    if(2*ind>n) {
        for(int i = 1; i<=n; i++) {
            if(ans[i]==perm[i]) continue;

            if(perm[i] < ans[i]) {
                for(int j = 1; j<=n; j++) ans[j]=perm[j];
            }
            break;
        }
        return;
    }


    if(2*ind==n) {
        x = min({perm[ind], perm[2*ind]});
    }
    else x = min({perm[ind], perm[2*ind], perm[2*ind+1]});

    if(x==perm[ind]) {
        rec(ind+1);
    }

    else if(x==perm[2*ind]) {
        swap(perm[ind], perm[2*ind]);
        rec(ind+1);
        swap(perm[ind], perm[2*ind]);
    }

    else if(2*ind != n){
        swap(perm[ind], perm[2*ind+1]);
        rec(ind+1);
        swap(perm[ind], perm[2*ind+1]);
        
        swap(perm[ind], perm[2*ind]);
        swap(perm[ind], perm[2*ind+1]);
        rec(ind+1);
        swap(perm[ind], perm[2*ind]);
        swap(perm[ind], perm[2*ind+1]);
    }
}

void solve() {
    cin >> n;
    vector<int> arr(n+1);

    ans.pb(0);
    perm.pb(0);
    for(int i = 1; i<=n; i++) {
        cin >> arr[i];
        ans.pb(arr[i]);
        perm.pb(arr[i]);
    }

    rec(1);

    for(int i = 1; i<=n; i++) cout << ans[i] << " ";
}

int32_t main() {
    ios::sync_with_stdio(false);
    cout.tie(0); cin.tie(0);

    int tc = 1;
    // cin >> tc;

    while(tc--) {
        solve();
        cout << "\n";
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...