Cod sursa(job #2002509)

Utilizator vasilescutiberiu121Vasilescu Costin-Tiberiu vasilescutiberiu121 Data 20 iulie 2017 09:35:45
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500000], r[500000];
void mergesort(int li, int ls)
{
    int aux, i, j, k = li, mid = (li + ls)/2;
    if(ls - li <= 1)
    {
        if(v[li] > v[ls])
        {
            aux = v[li];
            v[li] = v[ls];
            v[ls] = aux;
        }
        return;
    }
    mergesort(li, mid);
    mergesort(mid + 1, ls);
    i = li;
    j = mid + 1;
    while(i <= mid && j <= ls)
    {
        if(v[i] < v[j])
        {
            r[k++] = v[i];
            i++;
        }
        else
        {
            r[k++] = v[j];
            j++;
        }
    }
    while(i<=mid)
    {
        r[k++] = v[i];
        i++;
    }
    while(j <= ls)
    {
        r[k++] = v[j];
        j++;
    }
    for(i = li; i<=ls; i++)v[i] = r[i];
}

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