Cod sursa(job #3262866)

Utilizator ireallydontcareidontcare ireallydontcare Data 11 decembrie 2024 19:47:12
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>

using namespace std;

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

int v[10000001];
int aux[10000001];

void merge(int st, int dr) {
    if(st == dr)
        return ;
    
    int mid = (st + dr) / 2;

    merge(st,mid);
    merge(mid + 1, dr);

    int i = st, j = mid + 1;
    int cnt = 0;

    while(i <= mid && j <= dr){
        if(v[i] > v[j]){
            aux[++cnt] = v[j];
            j++;
        }
        else{
            aux[++cnt] = v[i];
            i++;
        }
    }
    while(i <= mid){
        aux[++cnt] = v[i];
        i++;
    }
    while(j <= dr){
        aux[++cnt] = v[j];
        j++;
    }

    for(int k = 1; k <= cnt; k ++){
        v[st + k - 1] = aux[k];
    }
}
int main(){
    int n;
    fin >> n;
    for(int i = 1; i<=n; i ++) {
        fin >> v[i];
    }
    merge(1,n);
    for(int i = 1; i<=n; i ++){
        fout << v[i] << " ";
    }
}