Cod sursa(job #2859723)

Utilizator Darius1414Dobre Darius Adrian Darius1414 Data 1 martie 2022 20:11:34
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>
using namespace std;
int v[500005];
void interc(int x[],int a,int mid,int b)
{
    int v[b-a+1];
    int sz=1,c1=a,c2=mid+1;
    while (c1<=mid && c2<=b)
    {
        if (x[c1]<x[c2])
        {
            v[sz]=x[c1];
            c1++;
        }
        else
        {
            v[sz]=x[c2];
            c2++;
        }
        sz++;
    }
    if (c1==mid+1)
        for (int i=c2; i<=b; i++)
        {
            v[sz]=x[i];
            sz++;
        }
    else
        for (int i=c1; i<=mid; i++)
        {
            v[sz]=x[i];
            sz++;
        }
    for (int i=a;i<=b;i++) x[i]=v[i-a+1];
}
void merges(int x[],int a,int b)
{
    if (b-a<=1)
    {
        if (x[a]>x[b])
            swap(x[a],x[b]);
        return;
    }
    int mid=(a+b)/2;
    merges(x,a,mid);
    merges(x,mid+1,b);
    interc(x,a,mid,b);
}
int n;
int main()
{
    ifstream f ("algsort.in");
    ofstream g ("algsort.out");
    f>>n;
    for (int i=1; i<=n; i++)
        f>>v[i];
    merges(v,1,n);
    for (int i=1; i<=n; i++)
        g<<v[i]<<' ';
}