// Online C++ compiler to run C++ program online
#include <bits/stdc++.h>
using namespace std;
void merge(vector<int>&v,int l,int mid,int r)
{
vector<int>temp;
int x=l;
int x1=mid+1;
while(x<=mid&&x1<=r)
{
if(v[x]<=v[x1])
{
temp.push_back(v[x]);
x++;
}
else
{
temp.push_back(v[x1]);
x1++;
}
}
while(x<=mid)
{
temp.push_back(v[x]);
x++;
}while(x1<=r)
{
temp.push_back(v[x1]);
x1++;
}
for(int k=0;k<temp.size();k++)
{
v[l+k]=temp[k];
}
}
void mergesort(vector<int>&v,int l,int r)
{
if(l<r)
{
int mid=l+(r-l)/2;
mergesort(v,l,mid);
mergesort(v,mid+1,r);
merge(v,l,mid,r);
}
}
// Write C++ code here
//std::cout << "Try programiz.pro";
int main()
{
vector<int>v={8,9,3,2,7,1,5};
cout<<"unsorted array is :"<<endl;
for(auto k:v)
{
cout<<k<<" ";
}
mergesort(v,0,v.size()-1);
cout<<"the sorted array is:"<<endl;
for(auto l:v)
{
cout<<l<<" ";
}
}
Ly8gT25saW5lIEMrKyBjb21waWxlciB0byBydW4gQysrIHByb2dyYW0gb25saW5lCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2b2lkIG1lcmdlKHZlY3RvcjxpbnQ+JnYsaW50IGwsaW50IG1pZCxpbnQgcikKewogICAgdmVjdG9yPGludD50ZW1wOwogICAgCiAgICAKICAgIGludCB4PWw7CiAgICBpbnQgeDE9bWlkKzE7CiAgICB3aGlsZSh4PD1taWQmJngxPD1yKQogICAgewogICAgICAgIGlmKHZbeF08PXZbeDFdKQogICAgICAgIHsKICAgICAgICAgICAgdGVtcC5wdXNoX2JhY2sodlt4XSk7CiAgICAgICAgICAgIHgrKzsKICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIHRlbXAucHVzaF9iYWNrKHZbeDFdKTsKICAgICAgICAgICAgeDErKzsKICAgICAgICAgICAgCiAgICAgICAgfQogICAgfQogICAgd2hpbGUoeDw9bWlkKQogICAgewogICAgICAgIHRlbXAucHVzaF9iYWNrKHZbeF0pOwogICAgICAgIHgrKzsKICAgICAgICAKICAgIH13aGlsZSh4MTw9cikKICAgIHsKICAgICAgICB0ZW1wLnB1c2hfYmFjayh2W3gxXSk7CiAgICAgICAgeDErKzsKICAgICAgICAKICAgIH0KICAgIGZvcihpbnQgaz0wO2s8dGVtcC5zaXplKCk7aysrKQogICAgewogICAgICAgIHZbbCtrXT10ZW1wW2tdOwogICAgICAgIAogICAgfQogICAgCiAgICAKICAgIAp9CnZvaWQgbWVyZ2Vzb3J0KHZlY3RvcjxpbnQ+JnYsaW50IGwsaW50IHIpCnsKICAgIGlmKGw8cikKICAgIHsKICAgICAgIGludCAgbWlkPWwrKHItbCkvMjsKICAgICAgICBtZXJnZXNvcnQodixsLG1pZCk7CiAgICAgICAgbWVyZ2Vzb3J0KHYsbWlkKzEscik7CiAgICAgICAgbWVyZ2UodixsLG1pZCxyKTsKICAgICAgICAKICAgIH0KfQoKCiAgICAvLyBXcml0ZSBDKysgY29kZSBoZXJlCiAgICAvL3N0ZDo6Y291dCA8PCAiVHJ5IHByb2dyYW1pei5wcm8iOwogICAgaW50IG1haW4oKQogICAgewogICAgICAgIHZlY3RvcjxpbnQ+dj17OCw5LDMsMiw3LDEsNX07CiAgICAgICAgY291dDw8InVuc29ydGVkIGFycmF5IGlzIDoiPDxlbmRsOwogICAgICAgIAogICAgICAgIGZvcihhdXRvIGs6dikKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQ8PGs8PCIgIjsKICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIG1lcmdlc29ydCh2LDAsdi5zaXplKCktMSk7CiAgICAgICAgY291dDw8InRoZSBzb3J0ZWQgYXJyYXkgaXM6Ijw8ZW5kbDsKICAgICAgICBmb3IoYXV0byBsOnYpCiAgICAgICAgewogICAgICAgICAgICBjb3V0PDxsPDwiICI7CiAgICAgICAgICAgIAogICAgICAgIH0KICAgIH0KCgo=