Language: C++

#include <cstdio>
#include <cmath>
#include <cstring>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <map>
#include <set>
#include <array>
#include <queue>
#include <string>
#include <vector>
#include <numeric>
#include <algorithm>
#include <functional>
#define MOD 1000000007
#define INF 11234567890
#define in std::cin
#define out std::cout
#define rep(i,N) for(LL i=0;i<N;++i)
typedef __int128 LL;
typedef std::pair<int, int> P;

int N, A, B;
LL v[51];
std::map<LL, LL>tmp;
double avg_ans;
LL how_ans;

LL nPm(LL n, LL m) {
	if (m <= 1)
		return n;
	return (n - m + 1) * nPm(n, m - 1);
}

LL nCm(LL n, LL m) {
	return nPm(n, m) / nPm(m, m);
}

int main()
{
	in >> N >> A >> B;
	rep(i, N) { in >> v[i]; }

	std::sort(v, v + N, std::greater<LL>());
	rep(i, N)
	{
		++tmp[v[i]];
	}
	for (LL num = A; num <= B; ++num)
	{
		LL sum = 0;
		std::map<LL, LL>list;
		for (int i = 0; i < num; ++i)
		{
			sum += v[i];
			++list[v[i]];
		}
		if (avg_ans < (double)sum / (double)num)
		{
			avg_ans = (double)sum / (double)num;
			how_ans = 1;
			// tmp[list[i].first] C list[i].second
			for (auto x : list)
			{
				how_ans *= nCm(tmp[x.first], x.second);
			}
		}
		else if (avg_ans == (double)sum / (double)num)
		{
			LL res = 1;
			// tmp[list[i].first] C list[i].second
			for (auto x : list)
			{
				res *= nCm(tmp[x.first], x.second);
			}
			how_ans += res;
		}
	}

	out << std::fixed << std::setprecision(10);
	out << avg_ans << std::endl << how_ans << std::endl;

	//for (int i = 1; i <= 50; ++i) { out << nCm(50, i) << std::endl; }
	return 0;
}

Compiler output:
a.cc: In function 'int main()':
a.cc:43:24: error: no match for 'operator>>' (operand types are 'std::istream' {aka 'std::basic_istream<char>'} and 'LL' {aka '__int128'})
   43 |         rep(i, N) { in >> v[i]; }
      |                        ^~ ~~~~
      |                              |
      |                              LL {aka __int128}
In file included from /usr/include/c++/14/iostream:42,
                 from a.cc:4:
/usr/include/c++/14/istream:170:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  170 |       operator>>(bool& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:170:7: note:   conversion of argument 1 would be ill-formed:
a.cc:43:30: error: cannot bind non-const lvalue reference of type 'bool&' to a value of type 'LL' {aka '__int128'}
   43 |         rep(i, N) { in >> v[i]; }
      |                           ~~~^
/usr/include/c++/14/istream:174:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>]' (near match)
  174 |       operator>>(short& __n);
      |       ^~~~~~~~
/usr/include/c++/14/istream:174:7: note:   conversion of argument 1 would be ill-formed:
a.cc:43:30: error: cannot bind non-const lvalue reference of type 'short int&' to a value of type 'LL' {aka '__int128'}
   43 |         rep(i, N) { in >> v[i]; }
      |                           ~~~^
/usr/include/c++/14/istream:177:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  177 |       operator>>(unsigned short& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:177:7: note:   conversion of argument 1 would be ill-formed:
a.cc:43:30: error: cannot bind non-const lvalue reference of type 'short unsigned int&' to a value of type 'LL' {aka '__int128'}
   43 |         rep(i, N) { in >> v[i]; }
      |                           ~~~^
/usr/include/c++/14/istream:181:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>]' (near match)
  181 |       operator>>(int& __n);
      |       ^~~~~~~~
/usr/include/c++/14/istream:181:7: note:   conversion of argument 1 would be ill-formed:
a.cc:43:30: error: cannot bind non-const lvalue reference of type 'int&' to a value of type 'LL' {aka '__int128'}
   43 |         rep(i, N) { in >> v[i]; }
      |                           ~~~^
/usr/include/c++/14/istream:184:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  184 |       operator>>(unsigned int& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:184:7: note:   conversion of argument 1 would be ill-formed:
a.cc:43:30: error: cannot bind non-const lvalue reference of type 'unsigned int&' to a value of type 'LL' {aka '__int128'}
   43 |         rep(i, N) { in >> v[i]; }
      |                           ~~~^
/usr/include/c++/14/istream:188:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  188 |       operator>>(long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:188:7: note:   conversion of argument 1 would be ill-formed:
a.cc:43:30: error: cannot bind non-const lvalue reference of type 'long int&' to a value of type 'LL' {aka '__int128'}
   43 |         rep(i, N) { in >> v[i]; }
      |                           ~~~^
/usr/include/c++/14/istream:192:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  192 |       operator>>(unsigned long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:192:7: note:   conversion of argument 1 would be ill-formed:
a.cc:43:30: error: cannot bind non-const lvalue reference of type 'long unsigned int&' to a value of type 'LL' {aka '__int128'}
   43 |         rep(i, N) { in >> v[i]; }
      |                           ~~~^
/usr/include/c++/14/istream:199:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  199 |       operator>>(long long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:199:7: note:   conversion of argument 1 would be ill-formed:
a.cc:43:30: error: cannot bind non-const lvalue reference of type 'long long int&' to a value of type 'LL' {aka '__int128'}
   43 |         rep(i, N) { in >> v[i]; }
      |                           ~~~^
/usr/include/c++/14/istream:203:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  203 |       operator>>(unsigned long long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:203:7: note:   conversion of argument 1 would be ill-formed:
a.cc:43:30: error: cannot bind non-const lvalue reference of type 'long long unsigned int&' to a value of type 'LL' {aka '__int128'}
   43 |         rep(i, N) { in >> v[i]; }
      |                           ~~~^
/usr/include/c++/14/istream:219:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(float&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  219 |       operator>>(float& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:219:7: note:   conversion of argument 1 would be ill-formed:
a.cc:43:30: error: cannot bind non-const lvalue reference of type 'float&' to a value of type 'LL' {aka '__int128'}
   43 |         rep(i, N) { in >> v[i]; }
      |                           ~~~^
/usr/include/c++/14/istream:223:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  223 |       operator>>(double& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:223:7: note:   conversion of argument 1 would be ill-formed:
a.cc:43:30: error: cannot bind non-const lvalue reference of type 'double&' to a value of type 'LL' {aka '__int128'}
   43 |         rep(i, N) { in >> v[i]; }
      |                           ~~~^
/usr/include/c++/14/istream:227:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  227 |       operator>>(long double& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:227:7: note:   conversion of argument 1 would be ill-formed:
a.cc:43:30: error: cannot bind non-const lvalue reference of type 'long double&' to a value of type 'LL' {aka '__int128'}
   43 |         rep(i, N) { in >> v[i]; }
      |                           ~~~^
/usr/include/c++/14/istream:328:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  328 |       operator>>(void*& __p)
      |       ^~~~~~~~
/usr/include/c++/14/istream:328:7: note:   conversion of argument 1 would be ill-formed:
a.cc:43:30: error: invalid conversion from 'LL' {aka '__int128'} to 'void*' [-fpermissive]
   43 |         rep(i, N) { in >> v[i]; }
      |                           ~~~^
      |                              |
      |                              LL {aka __int128}
a.cc:43:30: error: cannot bind rvalue '(void*)((long int)v[i])' to 'void*&'
/usr/include/c++/14/istream:122:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(__istream_type& (*)(__istream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  122 |       operator>>(__istream_type& (*__pf)(__istream_type&))
      |       ^~~~~~~~
/usr/include/c++/14/istream:122:7: note:   conversion of argument 1 would be ill-formed:
a.cc:43:30: error: invalid conversion from 'LL' {aka '__int128'} to 'std::basic_istream<char>::__istream_type& (*)(std::basic_istream<char>::__istream_type&)' {aka 'std::basic_istream<char>& (*)(std::basic_istream<char>&)'} [-fpermissive]
   43 |         rep(i, N) { in >> v[i]; }
      |                           ~~~^
      |                              |
      |                              LL {aka __int128}
/usr/include/c++/14/istream:126:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(__ios_type& (*)(__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>; __ios_type = std::basic_ios<char>]' (near match)
  126 |       operator>>(__ios_type& (*__pf)(__ios_type&))
      |       ^~~~~~~~
/usr/include/c++/14/istream:126:7: note:   conversion of argument 1 would be ill-formed:
a.cc:43:30: error: invalid conversion from 'LL' {aka '__int128'} to 'std::basic_istream<char>::__ios_type& (*)(std::basic_istream<char>::__ios