Cod sursa(job #1717818)

Utilizator SburlyAndrei Florin Sburly Data 15 iunie 2016 20:56:20
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
/********************
    Created by Sburly
********************/
#include <fstream>
#include <vector>

using namespace std;

void ms(int l, int r, vector<unsigned long int>& in, vector<unsigned long int>& out)
{
    long int m = (l + r) >> 1, i, j, k;
    if (l == r) return;
    ms(l, m, in,out);
    ms(m + 1, r,in,out);
    for (i=l, j=m+1, k=l; i<=m || j<=r; )
        if (j > r || (i <= m && in[i] < in[j]))
            out[k++] = in[i++];
        else
            out[k++] = in[j++];
    for (k = l; k <= r; k++) in[k] = out[k];
}

inline void merge_sort(int l, int r, vector<unsigned long int>& in)
{
    vector<unsigned long int> out(r-l+1);
    ms(l, r, in, out);
}

long int n;
vector<unsigned long int> v(500000);

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

    f >> n;

    for(long int i = 0; i < n; i++)
    {
        f >> v[i];
    }

    merge_sort(0,n-1,v);

    for(long int i = 0; i < n; i++)
    {
        g << v[i] << ' ';
    }

    return 0;
}