Cod sursa(job #3369555)

Utilizator rapidu36Victor Manz rapidu36 Data 21 octombrie 2026 09:18:43
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
#include <vector>

using namespace std;

vector <int> aux;

void inter(vector <int> &v, int st, int dr) {
    int m = (st + dr) / 2, i = st, j = m + 1, k = st;
    while (i <= m && j <= dr) {
        if (v[i] <= v[j]) {
            aux[k++] = v[i++];
        } else {
            aux[k++] = v[j++];
        }
    }
    while (i <= m) {
        aux[k++] = v[i++];
    }
    while (j <= dr) {
        aux[k++] = v[j++];
    }
    for (int i = st; i <= dr; i++) {
        v[i] = aux[i];
    }
}

void ms(vector <int> &v, int st, int dr) {
    if (st == dr) {
        return;
    }
    int m = (st + dr) / 2;
    ms(v, st, m);
    ms(v, m + 1, dr);
    inter(v, st, dr);
}

int main() {
    ifstream fin("algsort.in");
    ofstream fout("algsort.out");
    int n;
    fin >> n;
    aux.resize(n);
    vector <int> v(n);
    for (int i = 0; i < n; i++) {
        fin >> v[i];
    }
    fin.close();
    ms(v, 0, n - 1);
    for (int i = 0; i < n; i++) {
        fout << v[i] << " ";
    }
    fout << "\n";
    fout.close();
    return 0;
}