Cod sursa(job #2942681)

Utilizator magicninjaJula Diana magicninja Data 19 noiembrie 2022 22:45:07
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int v[500005], sol[500005];
void inter(int st, int mij, int dr){
    int i = st, j = mij + 1, k = 1;
    while(i <= mij && j <= dr){
        if(v[j] > v[i]){
            sol[k++] = v[i++];
        }
        else{
            sol[k++] = v[j++];
        }
    }
    while(i <= mij){
        sol[k++] = v[i++];
    }
    while(j <= dr){
        sol[k++] = v[j++];
    }
    for(i = 1, j = st; j <= dr; i++, j++){
        v[j] = sol[i];
    }
}

void msort(int st, int dr){
    if(st == dr){
        return;
    }
    int mid = (st + dr) / 2;
    msort(st, mid);
    msort(mid + 1, dr);
    inter(st, mid, dr);
}
int main()
{
    int n, i;
    in >> n;
    for(i = 1; i <= n; i++){
        in >> v[i];
    }
    msort(1, n);
    for(i = 1; i <= n; i++){
        out << v[i] << " ";
    }
    return 0;
}