Language: C++

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <cmath>

using namespace std;
int partition(int *first, int *last, int pivot) {
    int l = 0;
    int r = last - first -1;
    while (true){
        while (first[l] < pivot) ++l;
        while (first[r] >= pivot) --r;
        if (l >= r) return l;
        swap(&first[l], &first[r]);
    }
}

void QuickSort(int *first, int *last){
    int size = last - first;
    if (size <= 1) return;
    // pivotの決定
    // 先頭・真ん中・末尾の中央値
    int a = first[0];
    int b = first[size/2];
    int c = first[size-1];
    int pivot;
    if ((a-b)*(b-c)*(c-a) != 0){
        pivot = max(min(a,b), min(max(a,b),c));
    } else { // 中央値が取れない場合は最初に見つかった異なる2つの数のうち大きい方
        bool flag = true;
        for (int i=1; i<size; ++i){
            if (first[i-1] != first[i]) {
                pivot = max(first[i-1], first[i]);
                flag = false;
                break;
            }
        }
        if (flag) return; // 全て同じならソート済みと判定
    }
    int k = partition(first, last, pivot); // 配列の分割
    QuickSort(first, first+k);
    QuickSort(first+k, last);
}

int main(){
	
	int K;
	int T;
	cin >> K >> T;
	vector<int> aa(T);


	for(int i=0;i<T;i++){
		cin >> aa[i];
	}
	QuickSort(aa.begin(),aa.end());
	reverse(aa.begin(),aa.end());

	int count =0;
	int i=0,j=1;
	while(true){
		if(j==T)
			break;
		if(aa[i]>aa[j]){
			aa[i]-=aa[j];
			j++;
		}else if(aa[i]<=aa[j]){
			aa[j]-=aa[i];
			i=j;
			j++;
		}
	}
	if(aa[i]>0)aa[i]--;
	cout << aa[i] << endl;




	return 0;

}




Compiler output:
a.cc: In function 'int partition(int*, int*, int)':
a.cc:15:13: error: no matching function for call to 'swap(int*, int*)'
   15 |         swap(&first[l], &first[r]);
      |         ~~~~^~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/14/bits/exception_ptr.h:41,
                 from /usr/include/c++/14/exception:166,
                 from /usr/include/c++/14/ios:41,
                 from /usr/include/c++/14/ostream:40,
                 from /usr/include/c++/14/iostream:41,
                 from a.cc:1:
/usr/include/c++/14/bits/move.h:226:5: note: candidate: 'std::_Require<std::__not_<std::__is_tuple_like<_Tp> >, std::is_move_constructible<_Tp>, std::is_move_assignable<_Tp> > std::swap(_Tp&, _Tp&) [with _Tp = int*; _Require<__not_<__is_tuple_like<_Tp> >, is_move_constructible<_Tp>, is_move_assignable<_Tp> > = void]' (near match)
  226 |     swap(_Tp& __a, _Tp& __b)
      |     ^~~~
/usr/include/c++/14/bits/move.h:226:5: note:   conversion of argument 2 would be ill-formed:
a.cc:15:25: error: cannot bind non-const lvalue reference of type 'int*&' to an rvalue of type 'int*'
   15 |         swap(&first[l], &first[r]);
      |                         ^~~~~~~~~
/usr/include/c++/14/bits/exception_ptr.h:229:5: note: candidate: 'void std::__exception_ptr::swap(exception_ptr&, exception_ptr&)'
  229 |     swap(exception_ptr& __lhs, exception_ptr& __rhs)
      |     ^~~~
/usr/include/c++/14/bits/exception_ptr.h:229:25: note:   no known conversion for argument 1 from 'int*' to 'std::__exception_ptr::exception_ptr&'
  229 |     swap(exception_ptr& __lhs, exception_ptr& __rhs)
      |          ~~~~~~~~~~~~~~~^~~~~
/usr/include/c++/14/bits/move.h:250:5: note: candidate: 'template<class _Tp, long unsigned int _Nm> std::__enable_if_t<((bool)std::__is_swappable<_Tp>::value)> std::swap(_Tp (&)[_Nm], _Tp (&)[_Nm])'
  250 |     swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
      |     ^~~~
/usr/include/c++/14/bits/move.h:250:5: note:   template argument deduction/substitution failed:
a.cc:15:13: note:   mismatched types '_Tp [_Nm]' and 'int*'
   15 |         swap(&first[l], &first[r]);
      |         ~~~~^~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/14/bits/stl_algobase.h:64,
                 from /usr/include/c++/14/string:51,
                 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:
/usr/include/c++/14/bits/stl_pair.h:1089:5: note: candidate: 'template<class _T1, class _T2> typename std::enable_if<std::__and_<std::__is_swappable<_T1>, std::__is_swappable<_T2> >::value>::type std::swap(pair<_T1, _T2>&, pair<_T1, _T2>&)'
 1089 |     swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y)
      |     ^~~~
/usr/include/c++/14/bits/stl_pair.h:1089:5: note:   template argument deduction/substitution failed:
a.cc:15:13: note:   mismatched types 'std::pair<_T1, _T2>' and 'int*'
   15 |         swap(&first[l], &first[r]);
      |         ~~~~^~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_pair.h:1106:5: note: candidate: 'template<class _T1, class _T2> typename std::enable_if<(! std::__and_<std::__is_swappable<_T1>, std::__is_swappable<_T2> >::value)>::type std::swap(pair<_T1, _T2>&, pair<_T1, _T2>&)' (deleted)
 1106 |     swap(pair<_T1, _T2>&, pair<_T1, _T2>&) = delete;
      |     ^~~~
/usr/include/c++/14/bits/stl_pair.h:1106:5: note:   template argument deduction/substitution failed:
a.cc:15:13: note:   mismatched types 'std::pair<_T1, _T2>' and 'int*'
   15 |         swap(&first[l], &first[r]);
      |         ~~~~^~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/14/string:54:
/usr/include/c++/14/bits/basic_string.h:4039:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> void std::swap(__cxx11::basic_string<_CharT, _Traits, _Allocator>&, __cxx11::basic_string<_CharT, _Traits, _Allocator>&)'
 4039 |     swap(basic_string<_CharT, _Traits, _Alloc>& __lhs,
      |     ^~~~
/usr/include/c++/14/bits/basic_string.h:4039:5: note:   template argument deduction/substitution failed:
a.cc:15:13: note:   mismatched types 'std::__cxx11::basic_string<_CharT, _Traits, _Allocator>' and 'int*'
   15 |         swap(&first[l], &first[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:2805:5: note: candidate: 'template<class ... _Elements> typename std::enable_if<std::__and_<std::__is_swappable<_Elements>...>::value>::type std::swap(tuple<_UTypes ...>&, tuple<_UTypes ...>&)'
 2805 |     swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y)
      |     ^~~~
/usr/include/c++/14/tuple:2805:5: note:   template argument deduction/substitution failed:
a.cc:15:13: note:   mismatched types 'std::tuple<_UTypes ...>' and 'int*'
   15 |         swap(&first[l], &first[r]);
      |         ~~~~^~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/tuple:2823:5: note: candidate: 'template<class ... _Elements> typename std::enable_if<(! std::__and_<std::__is_swappable<_Elements>...>::value)>::type std::swap(tuple<_UTypes ...>&, tuple<_UTypes ...>&)' (deleted)
 2823 |     swap(tuple<_Elements...>&, tuple<_Elements...>&) = delete;
      |     ^~~~
/usr/include/c++/14/tuple:2823:5: note:   template argument deduction/substitution failed:
a.cc:15:13: note:   mismatched types 'std::tuple<_UTypes ...>' and 'int*'
   15 |         swap(&first[l], &first[r]);
      |         ~~~~^~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/14/vector:66,
                 from a.cc:2:
/usr/include/c++/14/bits/stl_vector.h:2122:5: note: candidate: 'template<class _Tp, class _Alloc> void std::swap(vector<_Tp, _Alloc>&, vector<_Tp, _Alloc>&)'
 2122 |     swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y)
      |     ^~~~
/usr/include/c++/14/bits/stl_vector.h:2122:5: note:   template argument deduction/substitution failed:
a.cc:15:13: note:   mismatched types 'std::vector<_Tp, _Alloc>' and 'int*'
   15 |         swap(&first[l], &first[r]);
      |         ~~~~^~~~~~~~~~~~~~~~~~~~~~
a.cc: In function 'int main()':
a.cc:57:27: error: cannot convert 'std::vector<int>::iterator' to 'int*'
   57 |         QuickSort(aa.begin(),aa.end());
      |                   ~~~~~~~~^~
      |                           |
      |                           std::vector<int>::iterator
a.cc:19:21: note:   initializing argument 1 of 'void QuickSort(int*, int*)'
   19 | void QuickSort(int *first, int *last){
      |                ~~~~~^~~~~