school.cpp:40:18: error: 'concept' does not name a type
40 | template<class T>concept Printable=requires(T x){cout<<x<<endl;};
| ^~~~~~~
school.cpp:40:18: note: 'concept' only available with '-std=c++2a' or '-fconcepts'
school.cpp:41:18: error: 'concept' does not name a type
41 | template<class T>concept NotPrintable=not Printable<T>;
| ^~~~~~~
school.cpp:41:18: note: 'concept' only available with '-std=c++2a' or '-fconcepts'
school.cpp:42:18: error: 'concept' does not name a type
42 | template<class T>concept Iterable=requires(T x){x.begin();x.end();begin(x);end(x);};
| ^~~~~~~
school.cpp:42:18: note: 'concept' only available with '-std=c++2a' or '-fconcepts'
school.cpp: In function 'i64 flg2(u64)':
school.cpp:59:27: error: 'countl_zero' was not declared in this scope
59 | i64 flg2(u64 x){return 63-countl_zero(x);}
| ^~~~~~~~~~~
school.cpp: In function 'i64 clg2(u64)':
school.cpp:60:36: error: 'countl_zero' was not declared in this scope
60 | i64 clg2(u64 x){return x-1==0?0:64-countl_zero(x-1);}
| ^~~~~~~~~~~
school.cpp: At global scope:
school.cpp:67:22: error: 'concept' does not name a type
67 | template<typename T> concept MemberInf=requires(T t){t.inf();};
| ^~~~~~~
school.cpp:67:22: note: 'concept' only available with '-std=c++2a' or '-fconcepts'
school.cpp:68:22: error: 'concept' does not name a type
68 | template<typename T> concept MemberNan=requires(T t){t.nan();};
| ^~~~~~~
school.cpp:68:22: note: 'concept' only available with '-std=c++2a' or '-fconcepts'
school.cpp:69:10: error: 'MemberInf' has not been declared
69 | template<MemberInf T>T inf(){return T().inf();}
| ^~~~~~~~~
school.cpp:69:22: error: 'T' does not name a type
69 | template<MemberInf T>T inf(){return T().inf();}
| ^
school.cpp:70:10: error: 'MemberNan' has not been declared
70 | template<MemberNan T> [[deprecated("use optional")]] T nan(){return T().nan();}
| ^~~~~~~~~
school.cpp:70:54: error: 'T' does not name a type
70 | template<MemberNan T> [[deprecated("use optional")]] T nan(){return T().nan();}
| ^
school.cpp:96:6: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts'
96 | Arr(auto its, auto ite):P(its,ite){}
| ^~~~
school.cpp:96:16: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts'
96 | Arr(auto its, auto ite):P(its,ite){}
| ^~~~
school.cpp:112:31: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts'
112 | template<class... A> auto ARR(auto n,A&&... a)
| ^~~~
school.cpp: In function 'Arr<long long int> permuinv(const Arr<long long int>&)':
school.cpp:53:13: error: 'ssize' was not declared in this scope; did you mean 'dysize'?
53 | #define sz ssize
| ^~~~~
school.cpp:123:49: note: in expansion of macro 'sz'
123 | Arr<int> permuinv(const Arr<int>& a){Arr<int> r(sz(a));for(int i=0;i<sz(a);i++)r[a[i]]=i;return r;}
| ^~
school.cpp: At global scope:
school.cpp:131:32: error: expected constructor, destructor, or type conversion before '(' token
131 | template<class T=int> requires (!Iterable<T>) T input(){T x;cin>>x;return x;}
| ^
school.cpp:132:19: error: 'requires' does not name a type
132 | template<class T> requires Iterable<T> T input(){
| ^~~~~~~~
school.cpp:132:19: note: 'requires' only available with '-std=c++2a' or '-fconcepts'
school.cpp:144:28: error: 'requires' does not name a type
144 | template<class T=Arr<int>> requires Iterable<T> T input(int n){
| ^~~~~~~~
school.cpp:144:28: note: 'requires' only available with '-std=c++2a' or '-fconcepts'
school.cpp: In function 'void solve()':
school.cpp:208:37: error: no matching function for call to 'input<Arr<std::array<long long int, 2>, std::vector<std::array<long long int, 2>, std::allocator<std::array<long long int, 2> > > > >(i64&)'
208 | auto arr=input<Arr<array<int,2>>>(n);
| ^
school.cpp:138:44: note: candidate: 'template<class T, long long int n> std::array<T, n> input()'
138 | template<class T=int,int n>std::array<T,n> input(){
| ^~~~~
school.cpp:138:44: note: template argument deduction/substitution failed:
school.cpp:208:37: note: candidate expects 0 arguments, 1 provided
208 | auto arr=input<Arr<array<int,2>>>(n);
| ^
school.cpp: In instantiation of 'const T& Arr<T, P>::operator[](int) const [with T = long long int; P = std::vector<long long int, std::allocator<long long int> >]':
school.cpp:123:85: required from here
school.cpp:104:11: error: 'ssize' was not declared in this scope; did you mean 'size'?
104 | int n=sz(*this);
| ^
school.cpp: In instantiation of 'T& Arr<T, P>::operator[](int) [with T = long long int; P = std::vector<long long int, std::allocator<long long int> >]':
school.cpp:123:86: required from here
school.cpp:98:11: error: 'ssize' was not declared in this scope; did you mean 'size'?
98 | int n=sz(*this);
| ^
In file included from /usr/include/c++/10/map:60,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:81,
from school.cpp:6:
/usr/include/c++/10/bits/stl_tree.h: In instantiation of 'static const _Key& std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_S_key(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type) [with _Key = long long int; _Val = long long int; _KeyOfValue = std::_Identity<long long int>; _Compare = solve()::<lambda(i64, i64)>; _Alloc = std::allocator<long long int>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type = const std::_Rb_tree_node<long long int>*]':
/usr/include/c++/10/bits/stl_tree.h:2132:44: required from 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_equal_pos(const key_type&) [with _Key = long long int; _Val = long long int; _KeyOfValue = std::_Identity<long long int>; _Compare = solve()::<lambda(i64, i64)>; _Alloc = std::allocator<long long int>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::key_type = long long int]'
/usr/include/c++/10/bits/stl_tree.h:2181:4: required from 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_insert_equal(_Arg&&) [with _Arg = const long long int&; _Key = long long int; _Val = long long int; _KeyOfValue = std::_Identity<long long int>; _Compare = solve()::<lambda(i64, i64)>; _Alloc = std::allocator<long long int>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator = std::_Rb_tree<long long int, long long int, std::_Identity<long long int>, solve()::<lambda(i64, i64)>, std::allocator<long long int> >::iterator]'
/usr/include/c++/10/bits/stl_multiset.h:503:36: required from 'std::multiset<_Key, _Compare, _Alloc>::iterator std::multiset<_Key, _Compare, _Alloc>::insert(const value_type&) [with _Key = long long int; _Compare = solve()::<lambda(i64, i64)>; _Alloc = std::allocator<long long int>; std::multiset<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree<long long int, long long int, std::_Identity<long long int>, solve()::<lambda(i64, i64)>, std::allocator<long long int> >::const_iterator; std::multiset<_Key, _Compare, _Alloc>::value_type = long long int]'
school.cpp:191:31: required from 'void Ordering<T, CMP>::add(const T&) [with T = long long int; CMP = solve()::<lambda(i64, i64)>]'
school.cpp:241:30: required from here
/usr/include/c++/10/bits/stl_tree.h:772:16: error: static assertion failed: comparison object must be invocable with two arguments of key type
772 | static_assert(__is_invocable<_Compare&, const _Key&, const _Key&>{},
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_tree.h: In instantiation of 'static const _Key& std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_S_key(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type) [with _Key = long long int; _Val = long long int; _KeyOfValue = std::_Identity<long long int>; _Compare = solve()::<lambda(i64, i64)>; _Alloc = std::allocator<long long int>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type = const std::_Rb_tree_node<long long int>*]':
/usr/include/c++/10/bits/stl_tree.h:2132:44: required from 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_equal_pos(const key_type&) [with _Key = long long int; _Val = long long int; _KeyOfValue = std::_Identity<long long int>; _Compare = solve()::<lambda(i64, i64)>; _Alloc = std::allocator<long long int>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::key_type = long long int]'
/usr/include/c++/10/bits/stl_tree.h:2181:4: required from 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_insert_equal(_Arg&&) [with _Arg = const long long int&; _Key = long long int; _Val = long long int; _KeyOfValue = std::_Identity<long long int>; _Compare = solve()::<lambda(i64, i64)>; _Alloc = std::allocator<long long int>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator = std::_Rb_tree<long long int, long long int, std::_Identity<long long int>, solve()::<lambda(i64, i64)>, std::allocator<long long int> >::iterator]'
/usr/include/c++/10/bits/stl_multiset.h:503:36: required from 'std::multiset<_Key, _Compare, _Alloc>::iterator std::multiset<_Key, _Compare, _Alloc>::insert(const value_type&) [with _Key = long long int; _Compare = solve()::<lambda(i64, i64)>; _Alloc = std::allocator<long long int>; std::multiset<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree<long long int, long long int, std::_Identity<long long int>, solve()::<lambda(i64, i64)>, std::allocator<long long int> >::const_iterator; std::multiset<_Key, _Compare, _Alloc>::value_type = long long int]'
school.cpp:166:31: required from 'void Ordering<T, CMP, Rest>::add(const T&) [with T = long long int; CMP = solve()::<lambda(i64, i64)>; Rest = {solve()::<lambda(i64, i64)>}]'
school.cpp:242:32: required from here
/usr/include/c++/10/bits/stl_tree.h:772:16: error: static assertion failed: comparison object must be invocable with two arguments of key type
/usr/include/c++/10/bits/stl_tree.h: In instantiation of 'static const _Key& std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_S_key(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type) [with _Key = long long int; _Val = long long int; _KeyOfValue = std::_Identity<long long int>; _Compare = solve()::<lambda(i64, i64)>; _Alloc = std::allocator<long long int>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type = const std::_Rb_tree_node<long long int>*]':
/usr/include/c++/10/bits/stl_tree.h:2132:44: required from 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_equal_pos(const key_type&) [with _Key = long long int; _Val = long long int; _KeyOfValue = std::_Identity<long long int>; _Compare = solve()::<lambda(i64, i64)>; _Alloc = std::allocator<long long int>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::key_type = long long int]'
/usr/include/c++/10/bits/stl_tree.h:2181:4: required from 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_insert_equal(_Arg&&) [with _Arg = const long long int&; _Key = long long int; _Val = long long int; _KeyOfValue = std::_Identity<long long int>; _Compare = solve()::<lambda(i64, i64)>; _Alloc = std::allocator<long long int>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator = std::_Rb_tree<long long int, long long int, std::_Identity<long long int>, solve()::<lambda(i64, i64)>, std::allocator<long long int> >::iterator]'
/usr/include/c++/10/bits/stl_multiset.h:503:36: required from 'std::multiset<_Key, _Compare, _Alloc>::iterator std::multiset<_Key, _Compare, _Alloc>::insert(const value_type&) [with _Key = long long int; _Compare = solve()::<lambda(i64, i64)>; _Alloc = std::allocator<long long int>; std::multiset<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree<long long int, long long int, std::_Identity<long long int>, solve()::<lambda(i64, i64)>, std::allocator<long long int> >::const_iterator; std::multiset<_Key, _Compare, _Alloc>::value_type = long long int]'
school.cpp:191:31: required from 'void Ordering<T, CMP>::add(const T&) [with T = long long int; CMP = solve()::<lambda(i64, i64)>]'
school.cpp:166:40: required from 'void Ordering<T, CMP, Rest>::add(const T&) [with T = long long int; CMP = solve()::<lambda(i64, i64)>; Rest = {solve()::<lambda(i64, i64)>}]'
school.cpp:242:32: required from here
/usr/include/c++/10/bits/stl_tree.h:772:16: error: static assertion failed: comparison object must be invocable with two arguments of key type