#include<stdio.h>
#include<string.h>
int k;
int nl,nr;
void merge(int L[],int R[],int A[])
{
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);
}
int A[]={3,4,6,2,3,4,1,0};
int main()
{
int i;
mergeSort(A,8);
for(i=0;i<8;i++)
{
}
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RyaW5nLmg+CgppbnQgazsKaW50IG5sLG5yOwp2b2lkIG1lcmdlKGludCBMW10saW50IFJbXSxpbnQgQVtdKQp7CgkKCW5sPXNpemVvZihMKS9zaXplb2YoTFswXSk7Cglucj1zaXplb2YoUikvc2l6ZW9mKFJbMF0pOwoJaW50IGk9MCxqPTA7Cgl3aGlsZShpPG5sICYmIGo8bnIpCgl7CgkJaWYoTFtpXTxSW2pdKQoJCXsKCQkJQVtrXT1MW2ldOwoJCQlpKys7CgkJfQoJCWVsc2UKCQl7CgkJCUFba109UltqXTsKCQkJaisrOwoJCX0KCQlrKys7Cgl9Cgl3aGlsZShpPG5sKQoJewoJCUFba109TFtpXTsKCQlpKys7CgkJaysrOwoJfQoJd2hpbGUoajxucikKCXsKCQlBW2tdPVJbal07CgkJaisrOwoJCWsrKzsKCX0KfQoKdm9pZCBtZXJnZVNvcnQoaW50IEFbXSxpbnQgbikKewoJaWYobjwyKQoJCXJldHVybjsgCglpbnQgaSxqOwoJaW50IExbbi8yXTsKCWludCBSW24tKG4vMildOwoJZm9yKGk9MDtpPG4vMjtpKyspCgl7CgkJTFtpXT1BW2ldOwoJfQoJZm9yKGo9MDtqPG4tKG4vMik7aisrKQoJewoJCVJbal09QVsobi8yKStqXTsKCX0KCW1lcmdlU29ydChMLG4vMik7CgltZXJnZVNvcnQoUixuLShuLzIpKTsKCW1lcmdlKEwsUixBKTsKfQoKaW50IEFbXT17Myw0LDYsMiwzLDQsMSwwfTsKCmludCBtYWluKCkKewoJaW50IGk7CgltZXJnZVNvcnQoQSw4KTsKCWZvcihpPTA7aTw4O2krKykKCXsKCQlwcmludGYoIiVkICIsQVtpXSk7Cgl9Cn0=