Cod sursa(job #3291435)

Utilizator and_Turcu Andrei and_ Data 4 aprilie 2025 18:13:14
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include<bits/stdc++.h>



void merge(std::vector<int> &v,int l,int mid,int r)
{
    std::vector<int>aux;
    int i=l,j=mid+1;

    while( i<=mid and j<=r )
    {
        if( v[i] < v[j] )
        {
            aux.push_back( v[i] );
            i++;
        }
        else
        {
            aux.push_back( v[j] );
            j++;
        }
    }
    while( i<=mid )
    {
        aux.push_back( v[i] );
        i++;
    }
    while( j<=r )
    {
        aux.push_back( v[j] );
        j++;   
    }

    for(int i=l;i<=r;i++)
    {
        v[i]=aux[i-l];
    }

}

void mergesort(std::vector<int> &v,int l,int r)
{
    if( l==r )
        return;

    int mid = (l+r)/2;

    mergesort(v,l,mid);
    mergesort(v,mid+1,r);

    merge( v,l,mid,r );
}

int main()
{
    int n;
    std::vector<int> a;
   
    std::ifstream fin("algsort.in");
    std::ofstream fout("algsort.out");

    fin >> n;
    for(int i=1;i<=n;i++)
    {
        int x;
        fin >> x;
        a.push_back(x);
    }

    mergesort(a,0,a.size()-1);

    for(auto x:a)
        fout << x << " ";

    return 0;
}