Note
Code:
#include<bits/stdc++.h>
using namespace std;
int main(){
#ifndef ONLINE_JUDGE
freopen("data.txt","r",stdin);
#endif
int n;
scanf("%d",&n);
int init[n],tmp[n],part[n];
for(int i=0;i<n;i++){
scanf("%d",&init[i]);
tmp[i]=init[i];
}
for(int i=0;i<n;i++)
scanf("%d",&part[i]);
int flag=0;
for(int i=1;i<n;i++){
int temp=tmp[i],j=i;
int count=0;
while(j>0&&temp<tmp[j-1]){
tmp[j]=tmp[j-1];
j--;
}
tmp[j]=temp;
if(flag==1){
printf("Insertion Sort\n");
for(int i=0;i<n;i++){
if(i!=0) printf(" ");
printf("%d",tmp[i]);
}
return 0;
}
for(int i=0;i<n;i++){
if(part[i]==tmp[i]) count++;
}
if(count==n) flag=1;
}
for(int step=2;step/2<=n;step*=2){
int count=0;
for(int i=0;i<n;i+=step)
sort(init+i,init+min(i+step,n));
if(flag==2){
printf("Merge Sort\n");
for(int i=0;i<n;i++){
if(i!=0) printf(" ");
printf("%d",init[i]);
}
return 0;
}
for(int i=0;i<n;i++){
if(part[i]==init[i]) count++;
}
if(count==n) flag=2;
}
return 0;
}