Cod sursa(job #3253914)

Utilizator Alexbora13Bora Ioan Alexandru Alexbora13 Data 5 noiembrie 2024 12:14:20
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 500000;

int n;
int v[NMAX+1];
int A[NMAX+1], nr1;
int B[NMAX+1], nr2;


void interclass(int st, int mij, int dr)
{
    nr1 = 0, nr2 = 0;
    for(int i=st; i<=mij; i++)
        A[++nr1] = v[i];
    for(int i=mij+1; i<=dr; i++)
        B[++nr2] = v[i];
    int i = 1, j = 1;
    while(i <= nr1 && j <= nr2)
    {
        if(A[i] < B[j])
            v[st++] = A[i++];
        else
            v[st++] = B[j++];
    }
    while(i<=nr1)
        v[st++] = A[i++];
    while(j<=nr2)
        v[st++] = B[j++];
}

void dei(int st, int dr)
{
    if(st >= dr)
        return;
    int mij = (st+dr)/2;
    dei(st,mij);
    dei(mij+1,dr);
    interclass(st, mij, dr);
}

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