Cod sursa(job #1785463)

Utilizator teo.cons98Constantin Teodor-Claudiu teo.cons98 Data 21 octombrie 2016 12:58:10
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

int n, v[500005], A[500005];;
void sortare(int p, int u)
{
    if(p < u)
    {
        int p1 = p;
        int mid = (p + u) / 2 , mid1 = mid + 1, t, x = p1;
        sortare(p,mid);
        sortare(mid + 1,u);
        while(p <= mid and mid1 <= u)
        {
            if(v[p] <= v[mid1])
            {
                A[x] = v[p];
                ++x;
                ++p;
            }
            else
            {
                A[x] = v[mid1];
                ++mid1;
                ++x;
            }
        }
        while(p <= mid)
        {
            A[x] = v[p];
            ++x;
            ++p;
        }

        while(mid1 <= u)
        {
            A[x] = v[mid1];
            ++x;
            ++mid1;
        }
        for(int i = p1; i <= u; ++i)
        {
            v[i] = A[i];
        }
    }
}

void citire()
{
    fin>>n;
    for(int i = 1; i <= n; ++i)
    {
        fin>>v[i];
    }
}

void afisare()
{
    for(int i = 1; i <= n; ++i)
    {
        fout<<v[i]<<" ";
    }
}

int main()
{
    citire();
    sortare(1,n);
    afisare();
}