Cod sursa(job #2983956)

Utilizator AndreiKatsukiAndrei Dogarel AndreiKatsuki Data 23 februarie 2023 12:37:36
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, v[500005];

void afisare(){
    for(int i=1;i<=n;++i){
        g << v[i] << " ";
    }
}

void interclasare(int st, int dr){
    int k=0, aux[100001];
    int mij=(st+dr)/2;
    int i=st, j=mij+1;
    while(i<=mij && j<=dr){
        if(v[i]<v[j]){
            aux[++k]=v[i];
            i++;
        }
        else{
            aux[++k]=v[j];
            j++;
        }
    }
    while(i<=mij){
        aux[++k]=v[i];
        i++;
    }
    while(j<=dr){
        aux[++k]=v[j];
        j++;
    }
    k=1;
    for(int i=st;i<=dr;++i){
        v[i]=aux[k];
        k++;
    }
}

void msort(int st, int dr){
    if(dr-st>=1){
        int mij=(st+dr)/2;
        msort(st, mij);
        msort(mij+1, dr);
        interclasare(st, dr);
    }
}

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