Language: C++

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct TCard{
	int Number;
	char Mark;
    bool operator<(const TCard &Y) const;
    bool operator==(const TCard &Y) const;	
};

bool TCard::operator<(const TCard &Y) const
{
	return Number < Y.Number;
}
bool TCard::operator<=(const TCard &Y) const
{
	return Number <= Y.Number;
}
bool TCard::operator==(const TCard &Y) const
{
	return Mark == Y.Mark;
}

int Partition(vector<TCard>& A, int p, int r)
{
	int i = p-1;
	for(int j = p; j < r; j++){
		if(A[j] <= A[r]){
			i++;
			swap(A[i], A[j]);
		}
	}
	swap(A[i+1], A[r]);
	return i+1;
}

void QuickSort(vector<TCard>& A, int p, int r)
{
	if(p < r){
		int q = Partition(A, p, r);
		QuickSort(A, p, q-1);
		QuickSort(A, q+1, r);
	}
}

int main()
{
	int n;
	cin >> n;
	vector<TCard> A(n);
	for(int i = 0; i < n; i++){
		cin >> A[i].Mark >> A[i].Number;
	}
	vector<TCard> B = A;
	std::stable_sort(B.begin(), B.end());
	QuickSort(A, 0, n-1);
	if(A == B){
		cout << "Stable" << endl;
	}else{
		cout << "Not stable" << endl;
	}
	for(int i = 0; i < n; i++){
		cout << A[i].Mark << ' ' << A[i].Number << endl;
	}
	return 0;
}

Compiler output:
a.cc:17:6: error: no declaration matches 'bool TCard::operator<=(const TCard&) const'
   17 | bool TCard::operator<=(const TCard &Y) const
      |      ^~~~~
a.cc:17:6: note: no functions named 'bool TCard::operator<=(const TCard&) const'
a.cc:6:8: note: 'struct TCard' defined here
    6 | struct TCard{
      |        ^~~~~
a.cc: In function 'int Partition(std::vector<TCard>&, int, int)':
a.cc:30:25: error: no match for 'operator<=' (operand types are '__gnu_cxx::__alloc_traits<std::allocator<TCard>, TCard>::value_type' {aka 'TCard'} and '__gnu_cxx::__alloc_traits<std::allocator<TCard>, TCard>::value_type' {aka 'TCard'})
   30 |                 if(A[j] <= A[r]){
In file included from /usr/include/c++/14/string:48,
                 from /usr/include/c++/14/bits/locale_classes.h:40,
                 from /usr/include/c++/14/bits/ios_base.h:41,
                 from /usr/include/c++/14/ios:44,
                 from /usr/include/c++/14/ostream:40,
                 from /usr/include/c++/14/iostream:41,
                 from a.cc:1:
/usr/include/c++/14/bits/stl_iterator.h:469:5: note: candidate: 'template<class _Iterator> constexpr bool std::operator<=(const reverse_iterator<_Iterator>&, const reverse_iterator<_Iterator>&)'
  469 |     operator<=(const reverse_iterator<_Iterator>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_iterator.h:469:5: note:   template argument deduction/substitution failed:
a.cc:30:31: note:   '__gnu_cxx::__alloc_traits<std::allocator<TCard>, TCard>::value_type' {aka 'TCard'} is not derived from 'const std::reverse_iterator<_Iterator>'
   30 |                 if(A[j] <= A[r]){
      |                               ^
/usr/include/c++/14/bits/stl_iterator.h:513:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr bool std::operator<=(const reverse_iterator<_Iterator>&, const reverse_iterator<_IteratorR>&)'
  513 |     operator<=(const reverse_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_iterator.h:513:5: note:   template argument deduction/substitution failed:
a.cc:30:31: note:   '__gnu_cxx::__alloc_traits<std::allocator<TCard>, TCard>::value_type' {aka 'TCard'} is not derived from 'const std::reverse_iterator<_Iterator>'
   30 |                 if(A[j] <= A[r]){
      |                               ^
/usr/include/c++/14/bits/stl_iterator.h:1704:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr bool std::operator<=(const move_iterator<_IteratorL>&, const move_iterator<_IteratorR>&)'
 1704 |     operator<=(const move_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_iterator.h:1704:5: note:   template argument deduction/substitution failed:
a.cc:30:31: note:   '__gnu_cxx::__alloc_traits<std::allocator<TCard>, TCard>::value_type' {aka 'TCard'} is not derived from 'const std::move_iterator<_IteratorL>'
   30 |                 if(A[j] <= A[r]){
      |                               ^
/usr/include/c++/14/bits/stl_iterator.h:1767:5: note: candidate: 'template<class _Iterator> constexpr bool std::operator<=(const move_iterator<_IteratorL>&, const move_iterator<_IteratorL>&)'
 1767 |     operator<=(const move_iterator<_Iterator>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_iterator.h:1767:5: note:   template argument deduction/substitution failed:
a.cc:30:31: note:   '__gnu_cxx::__alloc_traits<std::allocator<TCard>, TCard>::value_type' {aka 'TCard'} is not derived from 'const std::move_iterator<_IteratorL>'
   30 |                 if(A[j] <= A[r]){
      |                               ^
In file included from /usr/include/c++/14/bits/stl_algobase.h:64,
                 from /usr/include/c++/14/string:51:
/usr/include/c++/14/bits/stl_pair.h:1064:5: note: candidate: 'template<class _T1, class _T2> constexpr bool std::operator<=(const pair<_T1, _T2>&, const pair<_T1, _T2>&)'
 1064 |     operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_pair.h:1064:5: note:   template argument deduction/substitution failed:
a.cc:30:31: note:   '__gnu_cxx::__alloc_traits<std::allocator<TCard>, TCard>::value_type' {aka 'TCard'} is not derived from 'const std::pair<_T1, _T2>'
   30 |                 if(A[j] <= A[r]){
      |                               ^
In file included from /usr/include/c++/14/bits/basic_string.h:47,
                 from /usr/include/c++/14/string:54:
/usr/include/c++/14/string_view:717:5: note: candidate: 'template<class _CharT, class _Traits> constexpr bool std::operator<=(basic_string_view<_CharT, _Traits>, basic_string_view<_CharT, _Traits>)'
  717 |     operator<=(basic_string_view<_CharT, _Traits> __x,
      |     ^~~~~~~~
/usr/include/c++/14/string_view:717:5: note:   template argument deduction/substitution failed:
a.cc:30:31: note:   'TCard' is not derived from 'std::basic_string_view<_CharT, _Traits>'
   30 |                 if(A[j] <= A[r]){
      |                               ^
/usr/include/c++/14/string_view:724:5: note: candidate: 'template<class _CharT, class _Traits> constexpr bool std::operator<=(basic_string_view<_CharT, _Traits>, __type_identity_t<basic_string_view<_CharT, _Traits> >)'
  724 |     operator<=(basic_string_view<_CharT, _Traits> __x,
      |     ^~~~~~~~
/usr/include/c++/14/string_view:724:5: note:   template argument deduction/substitution failed:
a.cc:30:31: note:   'TCard' is not derived from 'std::basic_string_view<_CharT, _Traits>'
   30 |                 if(A[j] <= A[r]){
      |                               ^
/usr/include/c++/14/string_view:732:5: note: candidate: 'template<class _CharT, class _Traits> constexpr bool std::operator<=(__type_identity_t<basic_string_view<_CharT, _Traits> >, basic_string_view<_CharT, _Traits>)'
  732 |     operator<=(__type_identity_t<basic_string_view<_CharT, _Traits>> __x,
      |     ^~~~~~~~
/usr/include/c++/14/string_view:732:5: note:   template argument deduction/substitution failed:
a.cc:30:31: note:   'TCard' is not derived from 'std::basic_string_view<_CharT, _Traits>'
   30 |                 if(A[j] <= A[r]){
      |                               ^
/usr/include/c++/14/bits/basic_string.h:3956:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> bool std::operator<=(const __cxx11::basic_string<_CharT, _Traits, _Allocator>&, const __cxx11::basic_string<_CharT, _Traits, _Allocator>&)'
 3956 |     operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/14/bits/basic_string.h:3956:5: note:   template argument deduction/substitution failed:
a.cc:30:31: note:   '__gnu_cxx::__alloc_traits<std::allocator<TCard>, TCard>::value_type' {aka 'TCard'} is not derived from 'const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>'
   30 |                 if(A[j] <= A[r]){
      |                               ^
/usr/include/c++/14/bits/basic_string.h:3970:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> bool std::operator<=(const __cxx11::basic_string<_CharT, _Traits, _Allocator>&, const _CharT*)'
 3970 |     operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/14/bits/basic_string.h:3970:5: note:   template argument deduction/substitution failed:
a.cc:30:31: note:   '__gnu_cxx::__alloc_traits<std::allocator<TCard>, TCard>::value_type' {aka 'TCard'} is not derived from 'const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>'
   30 |                 if(A[j] <= A[r]){
      |                               ^
/usr/include/c++/14/bits/basic_string.h:3983:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> bool std::operator<=(const _CharT*, const __cxx11::basic_string<_CharT, _Traits, _Allocator>&)'
 3983 |     operator<=(const _CharT* __lhs,
      |     ^~~~~~~~
/usr/include/c++/14/bits/basic_string.h:3983:5: note:   template argument deduction/substitution failed:
a.cc:30:31: note:   mismatched types 'const _CharT*' and 'TCard'
   30 |                 if(A[j] <= A[r]){
      |                               ^
In file included from /usr/include/c++/14/bits/memory_resource.h:47,
                 from /usr/include/c++/14/string:68:
/usr/include/c++/14/tuple:2625:5: note: candidate: 'template<class ... _TElements, class ... _UElements> constexpr bool std::operator<=(const tuple<_UTypes ...>&, const tuple<_Elements ...>&)'
 2625 |     operator<=(const tuple<_TElements...>& __t,
      |     ^~~~~~~~
/usr/include/c++/14/tuple:2625:5: note:   template argument deduction/substitution failed:
a.cc:30:31: note:   '__gnu_cxx::__alloc_traits<std::allocator<TCard>, TCard>::value_type' {aka 'TCard'} is not derived from 'const std::tuple<_UTypes ...>'
   30 |                 if(A[j] <= A[r]){
      |                               ^
In file included from /usr/include/c++/14/vector:66,
                 from a.cc:2:
/usr/include/c++/14/bits/stl_vector.h:2108:5: note: candidate: 'template<class _Tp, class _Alloc> bool std::operator<=(const vector<_Tp, _Alloc>&, const vector<_Tp, _Alloc>&)'
 2108 |     operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_vector.h:2108:5: note:   template argument deduction/substitution failed:
a.cc:30:31: note:   '__gnu_cxx::__alloc_traits<std::allocator<TCard>, TCard>::value_type' {aka 'TCard'} is not derived from 'const std::vector<_Tp, _Alloc>'
   30 |                 if(A[j] <= A[r]){
      |                               ^