Cod sursa(job #3129064)

Utilizator RK13Barbu Eduard RK13 Data 12 mai 2023 14:51:01
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,v[500001];

void merger(int st, int mij, int dr)
{int na=mij-st+1,nb=dr-mij;
int a[na+1],b[nb+1];
    for (int i=0;i<na;i++)
        a[i]=v[i+st];
    for (int i=0;i<nb;i++)
        b[i]=v[i+mij+1];
    int i=0,j=0,k=st;
    while (i<na && j<nb)
    {
        if (a[i]<=b[j])
        {
            v[k]=a[i];
            i++;
        }
        else
        {
            v[k]=b[j];
            j++;
        }
        k++;
    }
    while (i<na)
    {
        v[k]=a[i];
        k++;
        i++;
    }
    while (j<nb)
    {
        v[k]=b[j];
        k++;
        j++;
    }

}

void mergesort(int st, int dr)
{
    if (st>=dr)
        return;
    int mij=(dr+st)/2;
    mergesort(st,mij);
    mergesort(mij+1,dr);
    merger(st,mij,dr);
}

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