Cod sursa(job #2606763)

Utilizator bem.andreiIceman bem.andrei Data 28 aprilie 2020 15:49:15
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <bits/stdc++.h>

using namespace std;
ifstream r("algsort.in");
ofstream w("algsort.out");
int v[500003];
void unire(int a, int mij, int b){
    int n1 = mij - a + 1, n2 =  b - mij, g[n1], h[n2];
    for(int i=0;i<n1;i++){
        g[i]=v[a+i];
    }
    for(int i=0;i<n2;i++){
        h[i]=v[mij+i+1];
    }
    int i=0, j=0, k=a;
    while(i<n1 && j<n2){
        if(g[i]<=h[j]){
            v[k]=g[i];
            i++;
        }
        else{
            v[k]=h[j];
            j++;
        }
        k++;
    }
    while (i < n1)
    {
        v[k] = g[i];
        i++;
        k++;
    }
    while (j < n2)
    {
        v[k] = h[j];
        j++;
        k++;
    }
}
void mergesort(int a, int b)
{
    if(a<b){
        int mij=(a+b)/2;
        mergesort(a, mij);
        mergesort(mij+1, b);
        unire(a, mij, b);
    }
}
int main()
{
    int n;
    r>>n;
    for(int i=0; i<n; i++)
    {
        r>>v[i];
    }
    mergesort(0, n-1);
    for(int i=0; i<n; i++)
    {
        w<<v[i]<<" ";
    }
    return 0;
}