#include #include using namespace std; // r = n - 1 // 0 1 2 3 4 5 6 n // l r // 4 6 7 2 1 5 3 // // l r // pppp????nnnn // // li // ???????????? // // k i // pppppnnnn??? // // ki n // 0 1 2 3 4 5 // ? ? ? ? ? ? // // // (0) 0 <= k <= i <= n // (1) a[0..k) svi parni // (2) a[k..i) svi neparni // (3) a[i..n) svi nepoznati // // (0) 0 <= l <= r + 1 <= n // (1) a[0..l) svi parni // (2) a[l..r] svi neodredjeni // (3) a(r..n) svi neparni // void dvobojka(vector &a) { int l = 0; int r = a.size() - 1; while (l < r) { if (a[l] % 2 == 0) { l++; } else if (a[r] % 2 != 0) { r--; } else { swap(a[l++], a[r--]); } } int k = 0; for (int i = 0; i < a.size(); i++) { if (a[i] % 2 != 0) { swap(a[k++], a[i]); } } } int main(void) { int n; cin >> n; vector a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } dvobojka(a); for (int i = 0; i < n; i++) { cout << a[i] << " "; } cout << endl; return 0; }