Cod sursa(job #1019862)

Utilizator catalin94Catalin Cristea catalin94 Data 1 noiembrie 2013 00:44:16
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>
using namespace std;

int v[1000000],
    s[1000000],
    n;

void mrg(int l, int r, int m) {
    int i = l,
        j = m + 1,
        k = 1;
    while(i <= m && j <= r) {
        if(v[i] < v[j]) {
            s[k] = v[i];
            i++;
        } else {
            s[k] = v[j];
            j++;
        }
        k++;
    }
    if(i <= m)
        while(i <= m) {
            s[k] = v[i];
            i++;
            k++;
        }
    else {
        while(j <= r) {
            s[k] = v[j];
            j++;
            k++;
        }
    }
    for(k = 1, i = l; i <= r; k++, i++)
        v[i] = s[k];
}

void mSort(int l, int r) {
    int m;
    if(l < r) {
        m = (l + r) / 2;
        mSort(l, m);
        mSort(m + 1, r);
        mrg(l, r ,m);
    }
}

int main () {
    ifstream f("algsort.in");
    ofstream g("algsort.out");

    f >> n;
    for(int i = 1; i <= n; i++)
        f >> v[i];
    mSort(1,n);
    for(int i = 1; i <= n; i++)
        g << v[i] << ' ';

    f.close();
    g.close();

    return 0;
}