Cod sursa(job #1987899)

Utilizator AkrielAkriel Akriel Data 1 iunie 2017 14:10:19
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("algsort.in");
ofstream fout ("algsort.out");

vector <int> partition(vector <int> numbers){
    vector <int> solution, left, equal, right;

    int pivot = numbers[0];

    for ( auto it : numbers ){
        if ( it < pivot )
            left.push_back(it);
        if ( it == pivot )
            equal.push_back(it);
        if ( it > pivot )
            right.push_back(it);
    }

    if ( left.size() > 1 )
        left = partition(left);
    if ( right.size() > 1 )
        right = partition(right);

    for ( auto it : left )
        solution.push_back(it);
    for ( auto it : equal )
        solution.push_back(it);
    for ( auto it : right )
        solution.push_back(it);
    return solution;
}

int totalNumbers;

vector <int> numbers, solution;

int main(){
    fin >> totalNumbers;
    int createdNumber;
    for ( int index = 0; index < totalNumbers; index++ ){
        fin >> createdNumber;
        numbers.push_back(createdNumber);
    }
    solution = partition(numbers);
    for ( auto it : solution )
        fout << it << " ";
    return 0;
}