Language: C++

#include <iostream>
#include <utility>
#include <algorithm>

using namespace std;

int bit[100010],n,m=0;
long long a[100010],b[100010],cnt;
pair<long long, long long> p[100010];
int sum(int i){
	int s = 0;
	while(i>0){
		s += bit[i];
		i -= i & -i;
	}
	return s;
}

void add(int i, int x){
	while(i<=n){
		bit[i] += x;
		i += i & -i;
	}
}

int main(){
	cin >> n;
	for(int i=0;i<n;i++){
		cin >> a[i];
		m = max(a[i],m);
	}
	
	long long lb=m+1,ub=-1,mid;
	while(lb-ub>1){
		long long x = 0;
		mid = (lb+ub)/2;
		cnt = 0;
		for(int i=0;i<n;i++){
			bit[i] = 0;
			if(a[i]>=mid){
				b[i] = 1;
				cnt++;
			}else{
				b[i] = -1;
			}
			x += b[i];
			p[i] = make_pair(x,i);
		}
		bit[n] = 0;
		sort(p,p+n);
		int now = 1;
		b[p[0].second] =  now;
		for(int i=1;i<n;i++){
			if(p[i].first!=p[i-1].first){
				now++;
			}
			b[p[i].second] = now;
		}
		
		for(int i=0;i<n;i++){
			cnt += sum(b[i]);
			add(b[i],1);
		}
		//cout << lb << " " << ub << " " << mid << " " << cnt << endl;
		long long k=n*(n+1)/2;
		if(cnt<k/2+k%2){
			lb = mid;
		}else{
			ub = mid;
		}
	}
	cout << ub << endl;
}
		
			

Compiler output:
a.cc: In function 'int main()':
a.cc:30:24: error: no matching function for call to 'max(long long int&, int&)'
   30 |                 m = max(a[i],m);
      |                     ~~~^~~~~~~~
In file included 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,
                 from /usr/include/c++/14/ostream:40,
                 from /usr/include/c++/14/iostream:41,
                 from a.cc:1:
/usr/include/c++/14/bits/stl_algobase.h:257:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  257 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:257:5: note:   template argument deduction/substitution failed:
a.cc:30:24: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   30 |                 m = max(a[i],m);
      |                     ~~~^~~~~~~~
/usr/include/c++/14/bits/stl_algobase.h:303:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  303 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:303:5: note:   candidate expects 3 arguments, 2 provided
In file included from /usr/include/c++/14/algorithm:61,
                 from a.cc:3:
/usr/include/c++/14/bits/stl_algo.h:5706:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(initializer_list<_Tp>)'
 5706 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5706:5: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_algo.h:5716:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(initializer_list<_Tp>, _Compare)'
 5716 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5716:5: note:   template argument deduction/substitution failed:
a.cc:30:24: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   30 |                 m = max(a[i],m);
      |                     ~~~^~~~~~~~