Cod sursa(job #3325623)

Utilizator domdiridomdidomDominik domdiridomdidom Data 25 noiembrie 2025 20:43:41
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.35 kb
#include <iostream>
#include <fstream>

using namespace std;

int t[500001];
int temp[500001];

void fesu(int bal, int kozep, int jobb, int t[])
{
    int idxbal = bal;
    int idxjobb = kozep+1;
    int idxtemp = 0;

    while(idxbal <= kozep && idxjobb <= jobb){
        if(t[idxbal] > t[idxjobb]){
            temp[idxtemp] = t[idxjobb];
            idxjobb++;
            idxtemp++;
        }
        else{
            temp[idxtemp] = t[idxbal];
            idxbal++;
            idxtemp++;
        }
    }

    while(idxbal <= kozep){
        temp[idxtemp] = t[idxbal];
        idxtemp++;
        idxbal++;
    }

    while(idxjobb <= jobb){
        temp[idxtemp] = t[idxjobb];
        idxtemp++;
        idxjobb++;
    }

    for(int i = 0; i < idxtemp; i++){
        t[i+bal] = temp[i];
    }

}

void szort(int bal, int jobb, int t[])
{
    if(bal >= jobb){
        return;
    }
    else{
        int kozep=(jobb+bal)/2;
        szort(bal, kozep, t);
        szort(kozep+1, jobb, t);
        fesu(bal, kozep, jobb, t);
    }
}



int main()
{
    ifstream be("algsort.in");
    ofstream ki("algsort.out");
    int n;
    be >> n;
    for(int i = 0; i < n; i++){
        be >> t[i];
    }
    szort(0, n - 1, t);
    for(int i = 0; i < n; i++){
        ki << t[i] << " ";
    }

    return 0;
}