Cod sursa(job #2779948)

Utilizator RaresPoinaruPoinaru-Rares-Aurel RaresPoinaru Data 5 octombrie 2021 16:12:42
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int tmp[500001],v[500001],n;
void Mergesort (int left, int right){
    int len=right-left+1;
    if (len==1)
        return;
    int mijloc=(left+right)/2;
    Mergesort (left,mijloc);
    Mergesort (mijloc+1,right);
    int i=left,j=mijloc+1,k=1;
    while (i<=mijloc and j<=right)
    {
        if (v[i]>v[j]){
            tmp[k++]=v[j++];
        }
        else{
            tmp[k++]=v[i++];
        }
    }
    while (i<=mijloc)
        tmp[k++]=v[i++];
    while (j<=right)
        tmp[k++]=v[j++];
    i=1;
    for (int r=left;r<=right;r++)
    {
        v[r]=tmp[i];
        i++;
    }
}
int main()
{
    fin >>n;
    for (int i=1;i<=n;++i)
        fin >>v[i];
    Mergesort (1,n);
    for (int i=1;i<=n;++i)
        fout <<v[i]<<' ';
    return 0;
}