Cod sursa(job #3347884)

Utilizator MMEnisEnis Mutlu MMEnis Data 18 martie 2026 18:08:45
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <bits/stdc++.h>

using namespace std;

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

int v[500001];

void combine ( int st, int dr )
{
    int mij = ( st + dr ) / 2;
    int l1 = mij - st + 1, l2 = dr - mij;
    vector <int> left(l1), right(l2);
    for ( int i = 0; i < l1; i ++ )
        left[i] = v[st + i];
    for ( int i = 0; i < l2; i ++ )
        right[i] = v[mij + 1 + i];
    int i = 0, j = 0;
    int k = st;
    while ( i < l1 && j < l2 )
    {
        if ( left[i] <= right[j] )
            v[k ++] = left[i ++];
        else v[k ++] = right[j ++];
    }
    while ( i < l1 )
        v[k ++] = left[i ++];
    while ( j < l2 )
        v[k ++] = right[j ++];
}

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

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