Cod sursa(job #1165134)

Utilizator SRaduRadu Szasz SRadu Data 2 aprilie 2014 14:51:24
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>

using namespace std;

const int MAX = 505505;

int N;
int V[MAX], Aux[MAX];

void Citire() {
    ifstream in("algsort.in");
    in >> N;
    for(int i = 1; i <= N; i++) {
        in >> V[i];
    } in.close();
}

void Afisare() {
    ofstream out("algsort.out");
    for(int i = 1; i <= N; i++) {
        out << V[i] << " ";
    } out.close();
}

void Sort(int L, int R) {
    if(L >= R) 
        return;
    
    int M = (L + R) >> 1;
    Sort(L, M);
    Sort(M + 1, R);

    for(int i = L, j = M + 1, poz = L; i <= M || j <= R; ) {
        if(i > M) 
            Aux[poz++] = V[j++];
        else if(j > R)
            Aux[poz++] = V[i++];
        else if(V[i] < V[j])
            Aux[poz++] = V[i++];
        else Aux[poz++] = V[j++];
    }

    for(int i = L; i <= R; i++)
        V[i] = Aux[i];
}

int main() {
    Citire();
    Sort(1, N);
    Afisare();
}