Cod sursa(job #3255534)

Utilizator AdrianRosuRosu Adrian Andrei AdrianRosu Data 10 noiembrie 2024 22:27:31
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500001], temp[500001];
int n, i;

int MergeSort(int st, int dr){
    if(st == dr)
        return 0;
    int mij = (st + dr) >> 1;
    int ans = MergeSort(st, mij) + MergeSort(mij + 1, dr);
    int k = st, j = mij + 1;
    for(int i=st;i<=mij;i++){
        while(v[i] >= v[j] && j <= dr)
            temp[k++] = v[j++];
        ans += (mij - j - 1);
        temp[k++] = v[i];
    }
    while(j <= dr)
        temp[k++] = v[j++];
    for(int i=st;i<=dr;i++)
        v[i] = temp[i];
    return ans;
}

int main(){
    fin >> n;
    for(i=1;i<=n;i++)
    fin >> v[i];
    MergeSort(1, n);
    for(i=1;i<=n;i++)
        fout << v[i] << " ";
}