Cod sursa(job #2899871)

Utilizator ctimburCristina T ctimbur Data 9 mai 2022 13:21:41
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
 
int a[500010], n, aux[500010];
 
void merge(int st, int m, int dr)
{
    int i = st, j = m+1, k = st;
    while(i <= m && j <= dr) {
        if(a[i] < a[j]){
            aux[k] = a[i];
            i++; k++;
        }
        else{
            aux[k] = a[j];
            j++; k++;
        }
    }
    while(i <= m){
        aux[k] = a[i];
        i++; k++;
    }
    while(j <= dr){
        aux[k] = a[j];
        j++; k++;
    }
    for(i = st; i <= dr; i++)
        a[i] = aux[i];
}
 
void sort(int st, int dr) {
    if(st < dr) {
        int m = (st + dr) / 2;
        sort(st,m);
        sort(m + 1,dr);
        merge(st, m, dr);
    }
}
 
int main()
{
    f >> n;
    for(int i = 1; i <= n; i++)
        f >> a[i];
 
    sort(1,n);
 
    for(int i = 1; i <= n; i++)
        g << a[i] << ' ';
 
    return 0;
}