Cod sursa(job #2355498)

Utilizator mariaghinescu22Ghinescu Maria mariaghinescu22 Data 26 februarie 2019 09:26:41
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>

using namespace std;

const int N=100001;
int v[N], aux[N];

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

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

void ms(int v[], int st, int dr){
    if(st==dr){
        return;
    }
    int m=(st+dr)/2;
    ms(v, st, m);
    ms(v, m+1, dr);
    merge_v(v, st, dr);
}

int main(){
    int n;
    in>>n;
    for(int i=1; i<=n; i++){
        in>>v[i];
    }
    ms(v, 1, n);
    for(int i=1; i<=n; i++){
        out<<v[i]<<" ";
    }
    return 0;
}