Cod sursa(job #1310244)

Utilizator florinasAsavei florinas Data 6 ianuarie 2015 16:55:59
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
using namespace std;
int n, v[500100], newv[500100];

inline void Merge(int st, int dr)
{
    if(st >= dr)
        return;
    int mij = (st + dr) / 2;
    Merge(st, mij);
    Merge(mij + 1, dr);
    int i, j, k;
    i = st;
    j = mij + 1;
    k = st;
    while(i <= mij && j <= dr)
    {
        if(v[i] < v[j])
        {
            newv[k++] = v[i];
            i++;
        }
        else
        {
            newv[k++] = v[j];
            j++;
        }
    }
    while(i <= mij)
    {
        newv[k++] = v[i];
        i++;
    }
    while(j <= dr)
    {
        newv[k++] = v[j];
        j++;
    }
    for(i = st; i <= dr; ++i)
        v[i] = newv[i];
}

int main()
{
    int i;
    ifstream fin("algsort.in");
    fin >> n;
    for(i = 1; i <= n; ++i)
        fin >> v[i];
    fin.close();

    Merge(1, n);

    ofstream fout("algsort.out");
    for(i = 1; i <= n; ++i)
        fout << v[i] << ' ';
    fout << endl;
    fout.close();
    return 0;
}