Cod sursa(job #3306819)

Utilizator iulia_morariuIuli Morariu iulia_morariu Data 14 august 2025 12:47:52
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <climits>
#include <vector>
#include <stack>
#include <cmath>
// #include <bits/stdc++.h>
#define in  fin
#define out fout

using namespace std;

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

int n;
int v[500001];

void sort(int l, int r){
    if(l == r) return;
    int m = (l + r) / 2;
    sort(l, m);
    sort(m + 1, r);

    int i1 = l, i2 = m + 1;
    vector<int> nw;
    for(int i = l; i <= r; i++){
        if(i1 == m + 1) nw.push_back( v[i2++] );
        else if(i2 == r + 1) nw.push_back( v[i1++] );
        else if(v[i1] < v[i2]) nw.push_back( v[i1++] );
        else nw.push_back( v[i2++] );
    }

    // cout << "l = " << l << " r = " << r << " nw = ";
    // for(const int &x : nw) cout << x << " ";
    // cout << '\n'; 

    for(int i = l; i <= r; i++) v[i] = nw[i - l];
}

signed main(){
    ios_base::sync_with_stdio(false);
    in.tie(NULL);

    in >> n;
    for(int i = 0; i < n; i++) in >> v[i];
    sort(0, n - 1);

    for(int i = 0; i < n; i++) out << v[i] << " ";
    out << '\n';

    return 0;
}