Cod sursa(job #1826493)

Utilizator RazvanR104Razvan-Andrei Ciocoiu RazvanR104 Data 10 decembrie 2016 15:15:53
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <thread>
#include <algorithm>

using namespace std;

int N;

void mergesort_multithreaded(int *V, int left, int right) {
    if (left >= right)
        return;
    int mid = (left + right) / 2;
    thread a(mergesort_multithreaded, V, left, mid);
    mergesort_multithreaded(V, mid + 1, right);
    a.join();
    inplace_merge(V + left, V + mid + 1, V + right + 1);
}

int main() {
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);

    int i;

    scanf("%d", &N);
    int *V = new int[N];
    for (i = 0; i < N; ++i)
        scanf("%d", &V[i]);

    mergesort_multithreaded(V, 0, N - 1);

    for (i = 0; i < N; ++i)
        cout << V[i] << ' ';

    return 0;
}