Cod sursa(job #3211147)

Utilizator StefantimStefan Timisescu Stefantim Data 8 martie 2024 16:44:32
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");


const int NMAX = 5e5;
int v[NMAX + 5];
int cop[NMAX + 5];
void merge_sort(int left, int right)
{
    int med = left + (right - left) / 2;
    int i, j, k;
    if(left < right)
    {
        merge_sort(left, med);
        merge_sort(med + 1, right);
        i = left;
        j = med + 1;
        k = 0;
        while(i <= med && j <= right)
        {
            if(v[i] < v[j])
                cop[k++] = v[i++];
            else
                cop[k++] = v[j++];
        }
        while(i <= med)
            cop[k++] = v[i++];
        while(j <= right)
            cop[k++] = v[j++];
        for(i = left, j = 0; i <= right; ++i, ++j)
            v[i] = cop[j];
    }

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