Note
Code
#include<bits/stdc++.h>
using namespace std;
int req[110];
void down_adjust(int low,int high){
int i=low,j=2*i;
while(j<=high){
if(j+1<=high&&req[j+1]>req[j]){
j++;
}
if(req[j]>req[i]){
swap(req[j],req[i]);
i=j;
j=2*i;
}
else break;
}
}
int main(){
#ifndef ONLINE_JUDGE
freopen("data.txt","r",stdin);
#endif
int n;
cin>>n;
int inp[n+1],order[n+1];
for(int i=1;i<=n;i++){
cin>>inp[i];
order[i]=inp[i];
}
sort(order+1,order+n+1);
for(int i=1;i<=n;i++)
cin>>req[i];
int i=1;
while(i+1<=n&&req[i]<=req[i+1]) i++;
int index=i++;
while(i<=n&&inp[i]==req[i]) i++;
if(i==n+1){
printf("Insertion Sort\n");
for(int j=++index;j>1;j--){
if(req[j-1]>req[j]) swap(req[j-1],req[j]);
}
}
else{
i=n;
while(req[i]==order[i]) i--;
printf("Heap Sort\n");
swap(req[1],req[i]);
down_adjust(1,i-1);
}
for(int t=1;t<=n;t++){
printf("%s%d",t==1?"":" ",req[t]);
}
return 0;
}