Mai intai trebuie sa te autentifici.

Cod sursa(job #2586239)

Utilizator Florinos123Gaina Florin Florinos123 Data 20 martie 2020 02:45:39
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>

using namespace std;

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

int n;
int v[500005];
int aux[500005];

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

void MergeSort (int st, int dr)
{
   if (st < dr)
   {
       int mij = (st + dr) / 2;
       MergeSort(st, mij);
       MergeSort(mij+1, dr);

       int i, j, k;
       i = st, j = mij + 1, k = 0;

       while (i <= mij && j <= dr)
       {
           if (v[i] < v[j])
           {
               k ++, aux[k] = v[i];
               i ++;
           }
           else {
              k ++, aux[k] = v[j];
              j ++;
           }
       }

       while (i <= mij)
       {
          k ++, aux[k] = v[i];
          i ++;
       }

       while (j <= dr)
       {
          k ++, aux[k] = v[j];
          j ++;
       }

       for (int i=st, j=1; i<=dr && j <= k; i++, j++)
          v[i] = aux[j];
   }
}

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

int main()
{
  Read();
  MergeSort(1, n);
  Print();
    return 0;
}