Cod sursa(job #3287997)

Utilizator PopaBogd4nPopa Bogdan PopaBogd4n Data 20 martie 2025 11:43:55
Problema Sortare prin comparare Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>
#include <iostream>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

int n, v[500005];

void mergesort(int a, int b)
{
    int c=(a + b) / 2;
    if(a==b)
        return;
    else
    {
        mergesort(a, c);
        mergesort(c + 1, b);
        int x=a, y=c + 1, u[500005];
        int nr = 0;
        while(x<=c && y<=b)
        {
            if(v[x]<=v[y])
            {
                nr++;
                u[nr]=v[x];
                x++;
            }
            else
            {
                nr++;
                u[nr]=v[y];
                y++;
            }
        }
        while(x <= c) {
            nr++;
            u[nr] = v[x];
            x++;
        }
        while(y <= b) {
            nr++;
            u[nr] = v[y];
            y++;
        }
        for(int i=a;i<=b;i++)
            v[i]=u[i - a + 1];
    }
}

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;
}