#include<iostream>
using namespace std;
void merge(int arr[],int low,int mid,int high){
int n1=mid-low+1;
int n2=high-mid;
int left[n1];
int right[n2];
for(int i=0;i<n1;i++){
left[i]=arr[i+1];
}
for(int i=0;i<n2;i++){
right[i]=arr[n1+i];
}
//merge
int i=0,j=0,k=0;
while(i<n1 && j<n2){
if (left[i]<right[j])
{
arr[k]=left[i];
i++;
k++;
}
else
{
arr[k]=right[j];
j++;
k++;
}
while (i<n1)
{
arr[k]=left[i];
i++;
k++;
}
while (j<n2)
{
arr[k]=right[j];
j++;
k++;
}
}
}
void mergeSort(int arr[],int l,int r){
if (r>l)
{
int m=l+(r-l)/2;
mergeSort(arr,l,m);
mergeSort(arr,m+1,r);
merge(arr,l,m,r);
}
}
int main() {
int n=5;
int l=0;
int r=n-1;
int arr[n]={3,2,4,1,5};
mergeSort(arr,l,r);
for (int i = 0; i < n; i++)
{
std::cout<< arr[i]<<" ";
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKdm9pZCBtZXJnZShpbnQgYXJyW10saW50IGxvdyxpbnQgbWlkLGludCBoaWdoKXsKICAgIGludCBuMT1taWQtbG93KzE7CiAgICBpbnQgbjI9aGlnaC1taWQ7CiAgICBpbnQgbGVmdFtuMV07CiAgICBpbnQgcmlnaHRbbjJdOwogICAgZm9yKGludCBpPTA7aTxuMTtpKyspewogICAgICAgIGxlZnRbaV09YXJyW2krMV07CiAgICB9CiAgICBmb3IoaW50IGk9MDtpPG4yO2krKyl7CiAgICAgICAgcmlnaHRbaV09YXJyW24xK2ldOwogICAgfQoKICAgIC8vbWVyZ2UKICAgIGludCBpPTAsaj0wLGs9MDsKICAgIHdoaWxlKGk8bjEgJiYgajxuMil7CiAgICAgICAgaWYgKGxlZnRbaV08cmlnaHRbal0pCiAgICAgICAgewogICAgICAgICAgICBhcnJba109bGVmdFtpXTsKICAgICAgICAgICAgaSsrOwogICAgICAgICAgICBrKys7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGFycltrXT1yaWdodFtqXTsKICAgICAgICAgICAgaisrOwogICAgICAgICAgICBrKys7CiAgICAgICAgfQogICAgICAgIHdoaWxlIChpPG4xKQogICAgICAgIHsKICAgICAgICAgICAgYXJyW2tdPWxlZnRbaV07CiAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgaysrOwogICAgICAgIH0KICAgICAgICB3aGlsZSAoajxuMikKICAgICAgICB7CiAgICAgICAgICAgIGFycltrXT1yaWdodFtqXTsKICAgICAgICAgICAgaisrOwogICAgICAgICAgICBrKys7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgfQp9Cgp2b2lkIG1lcmdlU29ydChpbnQgYXJyW10saW50IGwsaW50IHIpewogICAgaWYgKHI+bCkKICAgIHsKICAgICAgICBpbnQgbT1sKyhyLWwpLzI7CiAgICAgICAgbWVyZ2VTb3J0KGFycixsLG0pOwogICAgICAgIG1lcmdlU29ydChhcnIsbSsxLHIpOwogICAgICAgIG1lcmdlKGFycixsLG0scik7CiAgICB9CiAgICAKICAgIAp9CgoKCmludCBtYWluKCkgewogICAgaW50IG49NTsKICAgIGludCBsPTA7CiAgICBpbnQgcj1uLTE7CiAgICBpbnQgYXJyW25dPXszLDIsNCwxLDV9OwogICAgbWVyZ2VTb3J0KGFycixsLHIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICB7ICAgCiAgICAgICAgc3RkOjpjb3V0PDwgYXJyW2ldPDwiICI7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=