Language: C

#include<stdio.h>
#include<string.h>
#define N 100000
int partition(int,int);
void quicksort(int,int);
void marge(int,int,int);
void margeSort(int,int);
int judge(int n);
char Ina[N],Outa[N];
int Inb[N],Outb[N];
int main(){
  int n,i,p=0,j;
  scanf("%d",&n);
  for(i=0;i<n;i++){
    scanf(" %c %d",&Ina[i],&Inb[i]);
   
    // printf("%c\n",Ina[i]);
    Outa[i]=Ina[i];
    Outb[i]=Inb[i];
  }
  // for(i=0;i<n;i++)printf("%c %d\n",Outa[i],Outb[i]);
  quicksort(p,n-1);
  j=judge(n);
  
  if(j==0)   printf("Stable\n");
  else printf("Not stable\n");
  for(i=0;i<n;i++)printf("%c %d\n",Outa[i],Outb[i]);
  
  return 0;
}

int partition(int p,int r){
  int x,i,j,y;
  char z;

  x = Outb[r];
  i = p-1;

  for(j=p;j<r;j++){
   
    if(Outb[j]<=x){
      i++;
      z=Outa[i];      
      Outa[i]=Outa[j];      
      Outa[j]=z;
      
      y=Outb[i];
      Outb[i]=Outb[j];      
      Outb[j]=y;
    }
  }
  z=Outa[i+1];
  Outa[i+1]=Outa[r];
  Outa[r]=z;
  
  y=Outb[i+1];
  Outb[i+1]=Outb[r];
  Outb[r]=y;
  
  return i+1;
}

void quicksort(int p,int r){
  int q;
  if(p<r){
    q = partition(p,r);
    quicksort(p,q-1);
    quicksort(q+1,r);
  }
  return ;
}
int judge(int n){
  int i, j, a, b;
  for(i=0;i<n;i++){
    for(j=i+1;j<n;j++){
      for(a=0;a<n;a++){
	for(b=a+1;b<n;b++){
	  if(Inb[i]==Inb[j] && Inb[i]==Outb[b] && Inb[j]==Outb[a] && Ina[i]==Outa[b] && Ina[j]==Outa[a])
	    return 1;
	}
      }
    }
  }
  return 0;
}
void merge( int left, int mid, int right){
   
  int i, j, k, n1, n2;
   
  n1 = mid - left;
  n2 = right - mid;
   
  for(i=0;i<n1;i++){
    L[i] = A[left + i];
  }
  for(i=0;i<n2;i++){
    R[i] = A[mid + i];
  }
 
  L[n1].value=INFTY;
  R[n2].value=INFTY;
  i=0;
  j=0;
   
  for ( k = left; k < right; k++ ){
    if ( L[i].value <= R[j].value ){
      A[k] = L[i];
      i++;
    }
    else {
      A[k] = R[j];
      j++;
    }
  }
}
 
void mergeSort( int left, int right ){
   
  int mid;
   
  if ( left+1 < right ){
    mid = (left + right)/2;
    mergeSort(A, left, mid);
    mergeSort(A, mid, right);
    merge(A, left, mid, right);
  }
}

Compiler output:
main.c: In function 'merge':
main.c:94:5: error: 'L' undeclared (first use in this function)
   94 |     L[i] = A[left + i];
      |     ^
main.c:94:5: note: each undeclared identifier is reported only once for each function it appears in
main.c:94:12: error: 'A' undeclared (first use in this function)
   94 |     L[i] = A[left + i];
      |            ^
main.c:97:5: error: 'R' undeclared (first use in this function)
   97 |     R[i] = A[mid + i];
      |     ^
main.c:100:15: error: 'INFTY' undeclared (first use in this function)
  100 |   L[n1].value=INFTY;
      |               ^~~~~
main.c: In function 'mergeSort':
main.c:123:15: error: 'A' undeclared (first use in this function)
  123 |     mergeSort(A, left, mid);
      |               ^
main.c:123:5: error: too many arguments to function 'mergeSort'
  123 |     mergeSort(A, left, mid);
      |     ^~~~~~~~~
main.c:117:6: note: declared here
  117 | void mergeSort( int left, int right ){
      |      ^~~~~~~~~
main.c:124:5: error: too many arguments to function 'mergeSort'
  124 |     mergeSort(A, mid, right);
      |     ^~~~~~~~~
main.c:117:6: note: declared here
  117 | void mergeSort( int left, int right ){
      |      ^~~~~~~~~
main.c:125:5: error: too many arguments to function 'merge'
  125 |     merge(A, left, mid, right);
      |     ^~~~~
main.c:86:6: note: declared here
   86 | void merge( int left, int mid, int right){
      |      ^~~~~