Cod sursa(job #2863160)

Utilizator PMITPopescu Vasile PMIT Data 6 martie 2022 13:34:28
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <bits/stdc++.h>

using namespace std;


class Task {
public:

    vector<int> v;
    int n;
    void solve() {
        fill("algsort.in"); 
        qsort(0, n - 1); 
        print("algsort.out");
    }
private:

    void fill(string file_name) {
        ifstream fin(file_name);

        fin >> n;
        int x;
        for (int i = 0; i < n; i ++) {
            fin >> x;
            v.push_back(x);
        }
        fin.close(); 
    }

    void qsort(int l, int r) {

        if (l < r) {
            int pi = partition(l, r);

            qsort(l, pi - 1);
            qsort(pi + 1, r);
        }
    }

    int partition(int l, int r) {
        int x = v[r]; 
        int i = l; 
        for (int j = l; j < r; j ++) {
            if (v[j] <= x) {
                swap(v[i ++], v[j]);
            }
        }
        swap(v[i], v[r]);

        return i; 
    }

    void print(string fileName) {
        ofstream fout(fileName); 

        for (int i = 0; i < n; i ++) {
            fout << v[i] << " ";
        }
        fout.close(); 
    }

};

int main(void) {
    auto* obj = new (nothrow) Task(); 
    obj->solve(); 
}