Cod sursa(job #2646752)

Utilizator zarg169Roxana zarg169 Data 1 septembrie 2020 22:08:33
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>

using namespace std;
int v[500005];
int answer[500005];

void mergeSort(int left, int right) {
    if (left >= right) return;
    int middle = (left + right) / 2;
    mergeSort(left, middle);
    mergeSort(middle + 1, right);
    int leftIndex = left, rightIndex = middle + 1;
    for (int i = left; i <= right; ++i) {
        if (rightIndex > right || (leftIndex <= middle and v[leftIndex] <= v[rightIndex])) {
            answer[i] = v[leftIndex];
            leftIndex += 1;
        } else {
            answer[i] = v[rightIndex];
            rightIndex += 1;
        }
    }
    for (int i = left; i <= right; ++i) {
        v[i] = answer[i];
    }
}

int main()
{
    ifstream fin("algsort.in");
    ofstream fout ("algsort.out");
    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;
}