Cod sursă (job #256590)

Utilizator avatar oldatlantian Serban Cercelescu oldatlantian IP ascuns
Problemă Specsort (lot liceu) Compilator cpp | 0,63 kb
Rundă Arhiva de probleme Status evaluat
Dată 20 nov. 2016 15:13:32 Scor 100
#include <bits/stdc++.h>
using namespace std;

vector<int> v;

int main(void) {
    freopen("specsort.in", "r", stdin);
    freopen("specsort.out", "w", stdout);
    int n;
    bool flag;

    scanf("%d", &n);
    v.resize(n);
    for(auto &i: v)
        scanf("%d", &i);

    do {
        static int bit = 1;
        stable_partition(v.begin(), v.end(), [bit](const int &i){ return ~i & bit; });
        flag = false;
        bit<<= 1;

        for(auto i: v)
            printf("%d ", i);
        printf("\n");

        for(int i = 0; i < n; ++i)
            if(v[i] != i + 1)
                flag = true; }
    while(flag);

    return 0; }