Cod sursa(job #3307130)

Utilizator Nasa1004Ema Nicole Gheorghe Nasa1004 Data 18 august 2025 11:33:43
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
#include <vector>

using namespace std;
const int NMAX = 500000;

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

int v[NMAX + 2];
vector <int> segm;
void mergesort(int st, int dr) {
    if(st == dr)
        return;
    int mid = (st + dr) / 2;
    mergesort(st, mid);
    mergesort(mid + 1, dr);

    //Interclasarea
    segm.clear();
    int pos1 = st, pos2 = mid + 1;
    while(pos1 <= mid && pos2 <= dr) {
        if(v[pos1] < v[pos2]) {
            segm.push_back(v[pos1]);
            pos1++;
        }
        else {
            segm.push_back(v[pos2]);
            pos2++;
        }
    }
    while(pos1 <= mid) {
        segm.push_back(v[pos1]);
        pos1++;
    }
    while(pos2 <= dr) {
        segm.push_back(v[pos2]);
        pos2++;
    }
    for(int i = st; i <= dr; i++)
        v[i] = segm[i - st];
}
int main() {
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++)
        cin >> v[i];
    mergesort(1, n);
    for(int i = 1; i <= n; i++)
        cout << v[i] << " ";
    return 0;
}