Language: C++

#include <iostream>
#include <cstdio>
using namespace std;
#define MAX 100000;
#define SENTNEL 2000000000;

struct Card {
  char suit;
  int value;
};

struct Card L[MAX/2+2], R[MAX/2+2];

void merge(struct Card A[],int n,int left,int mid, int right) {
  int n1=mid-left;
  int n2=right-mid;
  for (int i=0; i<n1; i++) {
    L[i]=A[left+i];
  }
  for (int i=0; i<n; i++) {
    R[i]=A[mid+i];
  }
  L[n1].value=R[n2].value=SENTNEL;
  int i=0, j=0;
  for (int k=left; k<right; k++) {
    if (L[i].value<=R[j].value) {
      A[k]=L[i++];
    } else {
      A[k]=R[j++];
    }
  }
}
void mergeSort(struct Card A[],int n,int left,int right) {
  int mid;
  if(left+1<right) {
    mid=(left+right)/2;
    mergeSort(A,n,left,mid);
    mergeSort(A,n,mid,right);
    merge(A,n,left,mid,right);
  }
}
int partition(struct Card A[],int n,int p,int r) {
  Card t, x;
  x=A[r];
  int i=p-1;
  for (int j=p; j<r; j++) {
    if (A[j].value<=x.value) {
      i++;
      t=A[i];
      A[i]=A[j];
      A[j]=t;
    }
  }
  t=A[i+1];
  A[i+1]=A[r];
  A[r]=t;
  return i+1;
}
void quickSort(struct Card A[],int n,int p,int r) {
  if (p<r) {
    int q=partition(A,n,p,r);
    quickSort(A,n,p,q-1);
    quickSort(A,n,q+1,r);
  }
}
int main() {
  int n;
  scanf("%d",&n);
  struct Card A[MAX], B[MAX];
  char S[10];
  int v;
  for (int i=0; i<n; i++) {
    scanf("%s %d",S,&v);
    A[i].suit=B[i].suit=S[0];
    A[i].value=B[i].value=v;
  }
  mergeSort(A,n,0,n);
  quickSort(B,n,0,n-1);
  bool stable=true;
  for (int i=0; i<n; i++) {
    if (A[i].suit!=B[i].suit) {
      stable=false;
    }
  }
  if (stable) {
    printf("Stable\n");
  } else {
    printf("Not stable\n");
  }
  for (int i=0; i<n; i++) {
    printf("%c %d\n",B[i].suit,B[i].value);
  }
  return 0;
}



Compiler output:
a.cc:4:19: error: expected ']' before ';' token
    4 | #define MAX 100000;
      |                   ^
a.cc:12:15: note: in expansion of macro 'MAX'
   12 | struct Card L[MAX/2+2], R[MAX/2+2];
      |               ^~~
a.cc:12:18: error: expected unqualified-id before '/' token
   12 | struct Card L[MAX/2+2], R[MAX/2+2];
      |                  ^
a.cc:12:30: error: expected unqualified-id before '/' token
   12 | struct Card L[MAX/2+2], R[MAX/2+2];
      |                              ^
a.cc: In function 'void merge(Card*, int, int, int, int)':
a.cc:18:5: error: 'L' was not declared in this scope
   18 |     L[i]=A[left+i];
      |     ^
a.cc:21:5: error: 'R' was not declared in this scope
   21 |     R[i]=A[mid+i];
      |     ^
a.cc:23:3: error: 'L' was not declared in this scope
   23 |   L[n1].value=R[n2].value=SENTNEL;
      |   ^
a.cc:23:15: error: 'R' was not declared in this scope
   23 |   L[n1].value=R[n2].value=SENTNEL;
      |               ^
a.cc: In function 'int main()':
a.cc:4:19: error: expected ']' before ';' token
    4 | #define MAX 100000;
      |                   ^
a.cc:69:17: note: in expansion of macro 'MAX'
   69 |   struct Card A[MAX], B[MAX];
      |                 ^~~
a.cc:69:20: error: expected primary-expression before ']' token
   69 |   struct Card A[MAX], B[MAX];
      |                    ^
a.cc:69:28: error: expected primary-expression before ']' token
   69 |   struct Card A[MAX], B[MAX];
      |                            ^
a.cc:74:5: error: 'A' was not declared in this scope
   74 |     A[i].suit=B[i].suit=S[0];
      |     ^
a.cc:74:15: error: 'B' was not declared in this scope
   74 |     A[i].suit=B[i].suit=S[0];
      |               ^
a.cc:77:13: error: 'A' was not declared in this scope
   77 |   mergeSort(A,n,0,n);
      |             ^
a.cc:78:13: error: 'B' was not declared in this scope
   78 |   quickSort(B,n,0,n-1);
      |             ^