제출 #1319426

#제출 시각아이디문제언어결과실행 시간메모리
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...