#include<stdio.h>
#include<string.h>
int k;
void merge(int L[],int R[],int A[],int nl,int nr)
{
//nl=sizeof(L)/sizeof(L[0]);
//nr=sizeof(R)/sizeof(R[0]);
int i=0,j=0;
while(i<nl && j<nr)
{
if(L[i]<R[j])
{
A[k]=L[i];
i++;
}
else
{
A[k]=R[j];
j++;
}
k++;
}
while(i<nl)
{
A[k]=L[i];
i++;
k++;
}
while(j<nr)
{
A[k]=R[j];
j++;
k++;
}
}
void mergeSort(int A[],int n)
{
if(n<2)
return;
int i,j;
int L[n/2];
int R[n-(n/2)];
for(i=0;i<n/2;i++)
{
L[i]=A[i];
}
for(j=0;j<n-(n/2);j++)
{
R[j]=A[(n/2)+j];
}
mergeSort(L,n/2);
mergeSort(R,n-(n/2));
merge(L,R,A,n/2,n-(n/2));
}
int A[]={3,4,6,2,3,4,1,0};
int main(void)
{
mergeSort(A,8);
int i;
for(i=0;i<8;i++)
{
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RyaW5nLmg+CgppbnQgazsKdm9pZCBtZXJnZShpbnQgTFtdLGludCBSW10saW50IEFbXSxpbnQgbmwsaW50IG5yKQp7CgkKCS8vbmw9c2l6ZW9mKEwpL3NpemVvZihMWzBdKTsKCS8vbnI9c2l6ZW9mKFIpL3NpemVvZihSWzBdKTsKCWludCBpPTAsaj0wOwoJd2hpbGUoaTxubCAmJiBqPG5yKQoJewoJCWlmKExbaV08UltqXSkKCQl7CgkJCUFba109TFtpXTsKCQkJaSsrOwoJCX0KCQllbHNlCgkJewoJCQlBW2tdPVJbal07CgkJCWorKzsKCQl9CgkJaysrOwoJfQoJd2hpbGUoaTxubCkKCXsKCQlBW2tdPUxbaV07CgkJaSsrOwoJCWsrKzsKCX0KCXdoaWxlKGo8bnIpCgl7CgkJQVtrXT1SW2pdOwoJCWorKzsKCQlrKys7Cgl9Cn0KCnZvaWQgbWVyZ2VTb3J0KGludCBBW10saW50IG4pCnsKCWlmKG48MikKCQlyZXR1cm47IAoJaW50IGksajsKCWludCBMW24vMl07CglpbnQgUltuLShuLzIpXTsKCWZvcihpPTA7aTxuLzI7aSsrKQoJewoJCUxbaV09QVtpXTsKCX0KCWZvcihqPTA7ajxuLShuLzIpO2orKykKCXsKCQlSW2pdPUFbKG4vMikral07Cgl9CgltZXJnZVNvcnQoTCxuLzIpOwoJbWVyZ2VTb3J0KFIsbi0obi8yKSk7CgltZXJnZShMLFIsQSxuLzIsbi0obi8yKSk7Cn0KCmludCBBW109ezMsNCw2LDIsMyw0LDEsMH07CgppbnQgbWFpbih2b2lkKQp7CgltZXJnZVNvcnQoQSw4KTsKCWludCBpOwoJZm9yKGk9MDtpPDg7aSsrKQoJewoJCXByaW50ZigiJWQgIixBW2ldKTsKCX0KCXJldHVybiAwOwp9