Cod sursa(job #2880615)

Utilizator RaduAntoneoAntonio Alexandru Radu RaduAntoneo Data 29 martie 2022 22:09:55
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>
using namespace std;

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

void merge_sort(vector<int> &v) {
    int l = v.size();
    if(l > 1) {
        vector<int> st, dr;
        for(int i = 0; i < l / 2; i++)
            st.push_back(v[i]);
        for(int i = l / 2; i < l; i++)
            dr.push_back(v[i]);
        merge_sort(st);
        merge_sort(dr);

        int i = 0, j = 0, k = 0;
        while(i < st.size() && j < dr.size()) {
            if(st[i] < dr[j])
                v[k++] = st[i++];
            else    
                v[k++] = dr[j++];
        } 
        while(i < st.size()) {
            v[k++] = st[i++];
        }
        while(j < dr.size()) {
            v[k++] = dr[j++];
        }
    }
}

int main() {
    int n, x;
    f >> n;
    vector<int> v;
    for(int i = 0; i < n; i++) {
        f >> x;
        v.push_back(x);
    }
    merge_sort(v);
    
    for(int x : v)
        g << x << " ";
    f.close();
    g.close();
    return 0;
}