Cod sursa(job #3171377)

Utilizator InformaticianInDevenire1Munteanu Mihnea Gabriel InformaticianInDevenire1 Data 18 noiembrie 2023 19:42:22
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <bits/stdc++.h>

using namespace std;

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

long long v[500005];
vector <long long> w;

void Interclas (int s1,int s2,int d1,int d2){
    while (s1<=d1 and s2<=d2){
        if (v[s1]<v[s2]){
            w.push_back(v[s1]);
            s1++;
        }else{
            w.push_back(v[s2]);
            s2++;
        }
    }
    if (s1<d1){
        for (int i=s1+1;i<=d1;++i){
            w.push_back(v[i]);
        }
    }else{
        for (int i=s2+1;i<=d2;++i){
            w.push_back(v[i]);
        }
    }
    for (int i=0;i<w.size();++i){
        v[s1+i] = w[i];
    }
    w.clear();
}

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

int main()
{
    int n;
    fin >> n;
    for (int i=1;i<=n;++i){
        fin >> v[i];
    }
    MergeSort(1,n);
    for (int i=1;i<=n;++i){
        fout << v[i] << ' ';
    }
    return 0;
}