답안 #593188

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
593188 2022-07-10T14:34:58 Z SeDunion Diversity (CEOI21_diversity) C++17
컴파일 오류
0 ms 0 KB
#include <iostream>
#include <cassert>
#include <iomanip>
#include <algorithm>
#include <string>
#include <bitset> 
#include <vector>
#include <cmath>
#include <deque>
#include <queue>
#include <stack>
#include <map>
#include <set>
#ifndef LOCAL
	#include <bits/stdc++.h>
	#define cerr if(false)cerr
#endif
 
using namespace std;
using ll = long long;
 
const int N = 3e5 + 66;
 
ll a[N], n;
 
ll pref[N];

/*
summa(a[i]*(a[i]+1)/2 + a[i]*pref[i-1]*(i+1) - a[i]*(pref[n-1]-pref[i])*i)
summa((a[i]^2+a[i])/2 + a[i]*pref[i-1]*i+a[i]*pref[i-1] - a[i]*(pref[n-1]-pref[i])*i)
summa((a[i]^2+a[i])/2 + a[i]*pref[i]*i-a[i]^2*i + a[i]*pref[i-1] - a[i]*(pref[n-1]-pref[i])*i)
summa((a[i]^2+a[i])/2 + a[i]*pref[i]*i-a[i]^2*i + a[i]*pref[i]-a[i]^2 - a[i]*(pref[n-1]-pref[i])*i)
summa((a[i]^2+a[i])/2 + a[i]*pref[i]*i-a[i]^2*i + a[i]*pref[i]-a[i]^2 - a[i]*pref[n-1]*i - a[i]*pref[i]*i)
summa((a[i]^2+a[i])/2 + a[i]*pref[i]*i - a[i]^2*i + a[i]*pref[i]-a[i]^2 - a[i]*pref[n-1]*i - a[i]*pref[i]*i)
summa(a[i]/2 + a[i]*pref[i]*(i+1) - a[i]^2*i - a[i]^2/2 - a[i]*pref[n-1]*i - a[i]*pref[i]*i)
summa(a[i]/2 + a[i]*pref[i] - a[i]^2*i - a[i]^2/2 - a[i]*pref[n-1]*i)
summa(a[i]/2 + a[i]*pref[i] - a[i]^2*i - a[i]^2/2 - a[i]*pref[n-1]*i)
 */

ll f(ll s) { return s * (s + 1) / 2; }

//summa(f(pref[i - 1]) + f(pref[n - 1] - pref[i]))

ll solve() {
	ll ans = 0;
	for (int i = 0 ; i < n ; ++ i) {
		pref[i] = a[i];
		if (i) pref[i] += pref[i - 1];
	}
	for (int i = 0 ; i < n ; ++ i) {
		if (i) ans += f(pref[i - 1]);
		ans += f(pref[n - 1] - pref[i]);
	}
	ll C = n * f(pref[n-1]);
	// C = len * f(sum)
	return C-ans;
}

vector<int>vec;
int used[N];
int comp[N], freq[N];

void del(int v) {
	v = a[v];
	cerr << "del " << v << endl;
	comp[freq[v]]--;
	freq[v]--;
	if (freq[v] > 0 && !comp[freq[v]] && !used[freq[v]]) {
		used[freq[v]] = 1;
		vec.emplace_back(freq[v]);
	}
	comp[freq[v]]++;
}
void add(int v) {
	v = a[v];
	cerr << "add " << v << endl;
	comp[freq[v]]--;
	freq[v]++;
	if (freq[v] > 0 && !comp[freq[v]] && !used[freq[v]]) {
		used[freq[v]] = 1;
		vec.emplace_back(freq[v]);
	}
	comp[freq[v]]++;
}
using pll = pair<ll,ll>;
deque<pll>d;
int L, R;
ll get() {
	for (int i = 0 ; i < (int)vec.size() ; ++ i) {
		if (!comp[vec[i]]) {
			used[vec[i]] = 0;
			swap(vec[i], vec.back());
			vec.pop_back();
			--i;
		}
	}
	sort(vec.rbegin(), vec.rend());
	ll q = 0;
	d.clear();
	int par = 0;
	for (int i : vec) { 
		for (int _ = 0 ; _ < comp[i] ; ++ _) {
			if ((int)d.size() & 1) d.push_back(i);
			else d.push_front(i);
		}
		int lc, rc;
		if (par) lc = comp[i] / 2, rc = comp[i] - comp[i] / 2;
		else rc = comp[i] / 2, lc = comp[i] - comp[i] / 2;
		if (lc) d.push_front({i, lc});
		if (rc) d.push_back({i, rc});
		par ^= (comp[i] & 1);
	}
	int m = d.size(); ll pref = 0;
	cerr << "m ";
	for (int i = 0 ; i < m ; ++ i) cerr << "{" << d[i].first << ", " << d[i].second << "} ";
	cerr << endl;
	for (int i = 0 ; i < m ; ++ i) {
		q -= f(pref) + f(R-L+1 - pref - d[i]);
		pref += d[i];
	}
	q += m * f(R-L+1);
	cerr << "get " << q << endl;
	return q;
}

ll ans[N];

int ql[N], qr[N];

vector<tuple<int,int,int>>MO;

const int K = 400;

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int q;
	cin >> n >> q;
	for (int i = 0 ; i < n ; ++ i) cin >> a[i];
	for (int i = 0 ; i < q ; ++ i) {
		cin >> ql[i] >> qr[i];
		ql[i]--, qr[i]--;
		MO.emplace_back(ql[i]/K, qr[i], i);
	}
	sort(MO.begin(), MO.end());
	L = 1, R = 0;
	for (int $ = 0 ; $ < q ; ++ $) {
		int i = get<2>(MO[$]);
		int l = ql[i], r = qr[i];
		while (L > l) add(--L);
		while (R < r) add(++R);
		while (L < l) del(L++);
		while (R > r) del(R--);
		ans[i] = get();
	}
	for (int i = 0 ; i < q ; ++ i) {
		cout << ans[i] << "\n";
	}
	return 0;
	map<int,int>mp;
	for (int i = 0 ; i < n ; ++ i) mp[a[i]]++;
	vector<int>freq;
	for (auto [f, s] : mp) freq.emplace_back(s);
	sort(freq.rbegin(), freq.rend());
	deque<int>p;
	for (int i : freq) {
		if ((int)p.size() & 1) p.push_back(i);
		else p.push_front(i);
	}
	n = p.size();
	for (int i = 0 ; i < n ; ++ i) a[i] = p[i];
	cout << solve();
}

Compilation message

diversity.cpp: In function 'll get()':
diversity.cpp:103:40: error: no matching function for call to 'std::deque<std::pair<long long int, long long int> >::push_back(int&)'
  103 |    if ((int)d.size() & 1) d.push_back(i);
      |                                        ^
In file included from /usr/include/c++/10/deque:67,
                 from diversity.cpp:9:
/usr/include/c++/10/bits/stl_deque.h:1493:7: note: candidate: 'void std::deque<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = std::pair<long long int, long long int>; _Alloc = std::allocator<std::pair<long long int, long long int> >; std::deque<_Tp, _Alloc>::value_type = std::pair<long long int, long long int>]'
 1493 |       push_back(const value_type& __x)
      |       ^~~~~~~~~
/usr/include/c++/10/bits/stl_deque.h:1493:35: note:   no known conversion for argument 1 from 'int' to 'const value_type&' {aka 'const std::pair<long long int, long long int>&'}
 1493 |       push_back(const value_type& __x)
      |                 ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_deque.h:1508:7: note: candidate: 'void std::deque<_Tp, _Alloc>::push_back(std::deque<_Tp, _Alloc>::value_type&&) [with _Tp = std::pair<long long int, long long int>; _Alloc = std::allocator<std::pair<long long int, long long int> >; std::deque<_Tp, _Alloc>::value_type = std::pair<long long int, long long int>]'
 1508 |       push_back(value_type&& __x)
      |       ^~~~~~~~~
/usr/include/c++/10/bits/stl_deque.h:1508:30: note:   no known conversion for argument 1 from 'int' to 'std::deque<std::pair<long long int, long long int> >::value_type&&' {aka 'std::pair<long long int, long long int>&&'}
 1508 |       push_back(value_type&& __x)
      |                 ~~~~~~~~~~~~~^~~
diversity.cpp:104:23: error: no matching function for call to 'std::deque<std::pair<long long int, long long int> >::push_front(int&)'
  104 |    else d.push_front(i);
      |                       ^
In file included from /usr/include/c++/10/deque:67,
                 from diversity.cpp:9:
/usr/include/c++/10/bits/stl_deque.h:1456:7: note: candidate: 'void std::deque<_Tp, _Alloc>::push_front(const value_type&) [with _Tp = std::pair<long long int, long long int>; _Alloc = std::allocator<std::pair<long long int, long long int> >; std::deque<_Tp, _Alloc>::value_type = std::pair<long long int, long long int>]'
 1456 |       push_front(const value_type& __x)
      |       ^~~~~~~~~~
/usr/include/c++/10/bits/stl_deque.h:1456:36: note:   no known conversion for argument 1 from 'int' to 'const value_type&' {aka 'const std::pair<long long int, long long int>&'}
 1456 |       push_front(const value_type& __x)
      |                  ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_deque.h:1471:7: note: candidate: 'void std::deque<_Tp, _Alloc>::push_front(std::deque<_Tp, _Alloc>::value_type&&) [with _Tp = std::pair<long long int, long long int>; _Alloc = std::allocator<std::pair<long long int, long long int> >; std::deque<_Tp, _Alloc>::value_type = std::pair<long long int, long long int>]'
 1471 |       push_front(value_type&& __x)
      |       ^~~~~~~~~~
/usr/include/c++/10/bits/stl_deque.h:1471:31: note:   no known conversion for argument 1 from 'int' to 'std::deque<std::pair<long long int, long long int> >::value_type&&' {aka 'std::pair<long long int, long long int>&&'}
 1471 |       push_front(value_type&& __x)
      |                  ~~~~~~~~~~~~~^~~
diversity.cpp:118:33: error: no match for 'operator-' (operand types are 'll' {aka 'long long int'} and '__gnu_cxx::__alloc_traits<std::allocator<std::pair<long long int, long long int> >, std::pair<long long int, long long int> >::value_type' {aka 'std::pair<long long int, long long int>'})
  118 |   q -= f(pref) + f(R-L+1 - pref - d[i]);
In file included from /usr/include/c++/10/bits/stl_algobase.h:67,
                 from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/ostream:38,
                 from /usr/include/c++/10/iostream:39,
                 from diversity.cpp:1:
/usr/include/c++/10/bits/stl_iterator.h:500:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr decltype ((__y.base() - __x.base())) std::operator-(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&)'
  500 |     operator-(const reverse_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_iterator.h:500:5: note:   template argument deduction/substitution failed:
diversity.cpp:118:38: note:   mismatched types 'const std::reverse_iterator<_Iterator>' and 'll' {aka 'long long int'}
  118 |   q -= f(pref) + f(R-L+1 - pref - d[i]);
      |                                      ^
In file included from /usr/include/c++/10/bits/stl_algobase.h:67,
                 from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/ostream:38,
                 from /usr/include/c++/10/iostream:39,
                 from diversity.cpp:1:
/usr/include/c++/10/bits/stl_iterator.h:1533:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr decltype ((__x.base() - __y.base())) std::operator-(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorR>&)'
 1533 |     operator-(const move_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_iterator.h:1533:5: note:   template argument deduction/substitution failed:
diversity.cpp:118:38: note:   mismatched types 'const std::move_iterator<_IteratorL>' and 'll' {aka 'long long int'}
  118 |   q -= f(pref) + f(R-L+1 - pref - d[i]);
      |                                      ^
In file included from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from diversity.cpp:15:
/usr/include/c++/10/complex:361:5: note: candidate: 'template<class _Tp> std::complex<_Tp> std::operator-(const std::complex<_Tp>&, const std::complex<_Tp>&)'
  361 |     operator-(const complex<_Tp>& __x, const complex<_Tp>& __y)
      |     ^~~~~~~~
/usr/include/c++/10/complex:361:5: note:   template argument deduction/substitution failed:
diversity.cpp:118:38: note:   mismatched types 'const std::complex<_Tp>' and 'll' {aka 'long long int'}
  118 |   q -= f(pref) + f(R-L+1 - pref - d[i]);
      |                                      ^
In file included from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from diversity.cpp:15:
/usr/include/c++/10/complex:370:5: note: candidate: 'template<class _Tp> std::complex<_Tp> std::operator-(const std::complex<_Tp>&, const _Tp&)'
  370 |     operator-(const complex<_Tp>& __x, const _Tp& __y)
      |     ^~~~~~~~
/usr/include/c++/10/complex:370:5: note:   template argument deduction/substitution failed:
diversity.cpp:118:38: note:   mismatched types 'const std::complex<_Tp>' and 'll' {aka 'long long int'}
  118 |   q -= f(pref) + f(R-L+1 - pref - d[i]);
      |                                      ^
In file included from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from diversity.cpp:15:
/usr/include/c++/10/complex:379:5: note: candidate: 'template<class _Tp> std::complex<_Tp> std::operator-(const _Tp&, const std::complex<_Tp>&)'
  379 |     operator-(const _Tp& __x, const complex<_Tp>& __y)
      |     ^~~~~~~~
/usr/include/c++/10/complex:379:5: note:   template argument deduction/substitution failed:
diversity.cpp:118:38: note:   '__gnu_cxx::__alloc_traits<std::allocator<std::pair<long long int, long long int> >, std::pair<long long int, long long int> >::value_type' {aka 'std::pair<long long int, long long int>'} is not derived from 'const std::complex<_Tp>'
  118 |   q -= f(pref) + f(R-L+1 - pref - d[i]);
      |                                      ^
In file included from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from diversity.cpp:15:
/usr/include/c++/10/complex:456:5: note: candidate: 'template<class _Tp> std::complex<_Tp> std::operator-(const std::complex<_Tp>&)'
  456 |     operator-(const complex<_Tp>& __x)
      |     ^~~~~~~~
/usr/include/c++/10/complex:456:5: note:   template argument deduction/substitution failed:
diversity.cpp:118:38: note:   mismatched types 'const std::complex<_Tp>' and 'll' {aka 'long long int'}
  118 |   q -= f(pref) + f(R-L+1 - pref - d[i]);
      |                                      ^
In file included from /usr/include/c++/10/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from diversity.cpp:15:
/usr/include/c++/10/bits/valarray_after.h:406:5: note: candidate: 'template<class _Dom1, class _Dom2> std::_Expr<std::__detail::_BinClos<std::__minus, std::_Expr, std::_Expr, _Dom1, _Dom2>, typename std::__fun<std::__minus, typename _Dom1::value_type>::result_type> std::operator-(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const std::_Expr<_Dom2, typename _Dom2::value_type>&)'
  406 |     _DEFINE_EXPR_BINARY_OPERATOR(-, __minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
diversity.cpp:118:38: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'll' {aka 'long long int'}
  118 |   q -= f(pref) + f(R-L+1 - pref - d[i]);
      |                                      ^
In file included from /usr/include/c++/10/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from diversity.cpp:15:
/usr/include/c++/10/bits/valarray_after.h:406:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__minus, std::_Expr, std::_Constant, _Dom, typename _Dom::value_type>, typename std::__fun<std::__minus, typename _Dom1::value_type>::result_type> std::operator-(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const typename _Dom::value_type&)'
  406 |     _DEFINE_EXPR_BINARY_OPERATOR(-, __minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
diversity.cpp:118:38: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'll' {aka 'long long int'}
  118 |   q -= f(pref) + f(R-L+1 - pref - d[i]);
      |                                      ^
In file included from /usr/include/c++/10/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from diversity.cpp:15:
/usr/include/c++/10/bits/valarray_after.h:406:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__minus, std::_Constant, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__minus, typename _Dom1::value_type>::result_type> std::operator-(const typename _Dom::value_type&, const std::_Expr<_Dom1, typename _Dom1::value_type>&)'
  406 |     _DEFINE_EXPR_BINARY_OPERATOR(-, __minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
diversity.cpp:118:38: note:   '__gnu_cxx::__alloc_traits<std::allocator<std::pair<long long int, long long int> >, std::pair<long long int, long long int> >::value_type' {aka 'std::pair<long long int, long long int>'} is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
  118 |   q -= f(pref) + f(R-L+1 - pref - d[i]);
      |                                      ^
In file included from /usr/include/c++/10/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from diversity.cpp:15:
/usr/include/c++/10/bits/valarray_after.h:406:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__minus, std::_Expr, std::_ValArray, _Dom, typename _Dom::value_type>, typename std::__fun<std::__minus, typename _Dom1::value_type>::result_type> std::operator-(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const std::valarray<typename _Dom::value_type>&)'
  406 |     _DEFINE_EXPR_BINARY_OPERATOR(-, __minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
diversity.cpp:118:38: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'll' {aka 'long long int'}
  118 |   q -= f(pref) + f(R-L+1 - pref - d[i]);
      |                                      ^
In file included from /usr/include/c++/10/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from diversity.cpp:15:
/usr/include/c++/10/bits/valarray_after.h:406:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__minus, std::_ValArray, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__minus, typename _Dom1::value_type>::result_type> std::operator-(const std::valarray<typename _Dom::value_type>&, const std::_Expr<_Dom1, typename _Dom1::value_type>&)'
  406 |     _DEFINE_EXPR_BINARY_OPERATOR(-, __minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
diversity.cpp:118:38: note:   '__gnu_cxx::__alloc_traits<std::allocator<std::pair<long long int, long long int> >, std::pair<long long int, long long int> >::value_type' {aka 'std::pair<long long int, long long int>'} is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
  118 |   q -= f(pref) + f(R-L+1 - pref - d[i]);
      |                                      ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from diversity.cpp:15:
/usr/include/c++/10/valarray:1186:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__minus, std::_ValArray, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__minus, _Tp>::result_type> std::operator-(const std::valarray<_Tp>&, const std::valarray<_Tp>&)'
 1186 | _DEFINE_BINARY_OPERATOR(-, __minus)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/valarray:1186:1: note:   template argument deduction/substitution failed:
diversity.cpp:118:38: note:   mismatched types 'const std::valarray<_Tp>' and 'll' {aka 'long long int'}
  118 |   q -= f(pref) + f(R-L+1 - pref - d[i]);
      |                                      ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from diversity.cpp:15:
/usr/include/c++/10/valarray:1186:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__minus, std::_ValArray, std::_Constant, _Tp, _Tp>, typename std::__fun<std::__minus, _Tp>::result_type> std::operator-(const std::valarray<_Tp>&, const typename std::valarray<_Tp>::value_type&)'
 1186 | _DEFINE_BINARY_OPERATOR(-, __minus)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/valarray:1186:1: note:   template argument deduction/substitution failed:
diversity.cpp:118:38: note:   mismatched types 'const std::valarray<_Tp>' and 'll' {aka 'long long int'}
  118 |   q -= f(pref) + f(R-L+1 - pref - d[i]);
      |                                      ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from diversity.cpp:15:
/usr/include/c++/10/valarray:1186:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__minus, std::_Constant, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__minus, _Tp>::result_type> std::operator-(const typename std::valarray<_Tp>::value_type&, const std::valarray<_Tp>&)'
 1186 | _DEFINE_BINARY_OPERATOR(-, __minus)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/valarray:1186:1: note:   template argument deduction/substitution failed:
diversity.cpp:118:38: note:   '__gnu_cxx::__alloc_traits<std::allocator<std::pair<long long int, long long int> >, std::pair<long long int, long long int> >::value_type' {aka 'std::pair<long long int, long long int>'} is not derived from 'const std::valarray<_Tp>'
  118 |   q -= f(pref) + f(R-L+1 - pref - d[i]);
      |                                      ^
diversity.cpp:119:8: error: no match for 'operator+=' (operand types are 'll' {aka 'long long int'} and '__gnu_cxx::__alloc_traits<std::allocator<std::pair<long long int, long long int> >, std::pair<long long int, long long int> >::value_type' {aka 'std::pair<long long int, long long int>'})
  119 |   pref += d[i];