-
个人简介
抄一下我另一个机构的
"AC=Answer Coarse=粗劣的答案" "WA=Wonderful Answer=好答案" "TLE=Time Limit Enough=时间充裕" "MLE=Memory Limit Enough=内存充裕" "CE=Compile Easily=轻松通过编译" "RE=Run Excellently=完美运行" "UKE=Unbelievably Keep Enough Score=难以置信地保持足够的分数"
AC只能得低分!
千万别AC
所以:
file:///C:/Users/86177/Downloads/yu5SdbBaPDTiiWo9gEjR1%20(5).png
把如上文件全选后拖动放进最上面可以放入的地方按一下enter有祝福哦!
猜猜图片在那个题 https://kedaoi.cn/p/1041/file/xigViBgJSApza_8nB2klp.png 进去试试 你能几命过关 https://poki.com/zh/g/level-devil 猜猜是啥图片 https://kedaoi.cn/ 0 Time Exceeded P0001 A+B Problem 程子皓 ≥6586ms ≥392 KiB C++14 2 分钟前
战绩可查!!!!
代码如下
#include<iostream> #include<cstring> #include<cstdio> #include<cstring> using namespace std; struct node { long long data,rev,sum, pig = 101; node *son[2],*pre; bool judge(); bool isroot(); void pushdown(); void update(); void setson(node *child,int lr); }lct[233]; int top,a,b; node *getnew(int x) { node *now=lct+ ++top; now->data=x; now->pre=now->son[1]=now->son[0]=lct; now->sum=0; now->rev=0; return now; } bool node::judge(){return pre->son[1]==this;} bool node::isroot() { if(pre==lct)return true; return !(pre->son[1]==this||pre->son[0]==this); } void node::pushdown() { if(this==lct||!rev)return; swap(son[0],son[1]); son[0]->rev^=1; son[1]->rev^=1; rev=0; } void node::update(){sum=son[1]->sum+son[0]->sum+data;} void node::setson(node *child,int lr) { this->pushdown(); child->pre=this; son[lr]=child; this->update(); } void rotate(node *now) { node *father=now->pre,*grandfa=father->pre; if(!father->isroot()) grandfa->pushdown(); father->pushdown();now->pushdown(); int lr=now->judge(); father->setson(now->son[lr^1],lr); if(father->isroot()) now->pre=grandfa; else grandfa->setson(now,father->judge()); now->setson(father,lr^1); father->update();now->update(); if(grandfa!=lct) grandfa->update(); } void splay(node *now) { if(now->isroot())return; for(;!now->isroot();rotate(now)) if(!now->pre->isroot()) now->judge()==now->pre->judge()?rotate(now->pre):rotate(now); } node *access(node *now) { node *last=lct; for(;now!=lct;last=now,now=now->pre) { splay(now); now->setson(last,1); } return last; } void changeroot(node *now) { access(now)->rev^=1; splay(now); } void connect(node *x,node *y) { changeroot(x); x->pre=y; access(x); } void cut(node *x,node *y) { changeroot(x); access(y); splay(x); x->pushdown(); x->son[1]=y->pre=lct; x->update(); } int query(node *x,node *y) { changeroot(x); node *now=access(y); return now->sum; } int main() { scanf("%d%d",&a,&b); node *A=getnew(a); node *B=getnew(b); connect(A,B); cut(A,B); connect(A,B); for(int i = 1; i <= 1000000000001; i++){ i -= 1; } printf("%d\n",query(A,B)); return 0; }
0 Runtime Error P1763 自己实现函数—min() 程子皓 10ms 416 KiB C++ 14 3 分钟前 我是第一个RE的! 代码如下:
#include<bits/stdc++.h> using namespace std; int main(){ int n = 1; int s = 1/0; cout << s; return 0; }
有谁知道为什么编译会出现这个啊?????????????????????????????????????????????????????????????????
// Core algorithmic facilities -*- C++ -*- // Copyright (C) 2001-2014 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the // terms of the GNU General Public License as published by the // Free Software Foundation; either version 3, or (at your option) // any later version. // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // Under Section 7 of GPL version 3, you are granted additional // permissions described in the GCC Runtime Library Exception, version // 3.1, as published by the Free Software Foundation. // You should have received a copy of the GNU General Public License and // a copy of the GCC Runtime Library Exception along with this program; // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see // <http://www.gnu.org/licenses/>. /* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Hewlett-Packard Company makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * * * Copyright (c) 1996-1998 * Silicon Graphics Computer Systems, Inc. * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Silicon Graphics makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. */ /** @file bits/stl_algobase.h * This is an internal header file, included by other library headers. * Do not attempt to use it directly. @headername{algorithm} */ #ifndef _STL_ALGOBASE_H #define _STL_ALGOBASE_H 1 #include <bits/c++config.h> #include <bits/functexcept.h> #include <bits/cpp_type_traits.h> #include <ext/type_traits.h> #include <ext/numeric_traits.h> #include <bits/stl_pair.h> #include <bits/stl_iterator_base_types.h> #include <bits/stl_iterator_base_funcs.h> #include <bits/stl_iterator.h> #include <bits/concept_check.h> #include <debug/debug.h> #include <bits/move.h> // For std::swap and _GLIBCXX_MOVE #include <bits/predefined_ops.h> namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION #if __cplusplus < 201103L // See http://gcc.gnu.org/ml/libstdc++/2004-08/msg00167.html: in a // nutshell, we are partially implementing the resolution of DR 187, // when it's safe, i.e., the value_types are equal. template<bool _BoolType> struct __iter_swap { template<typename _ForwardIterator1, typename _ForwardIterator2> static void iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) { typedef typename iterator_traits<_ForwardIterator1>::value_type _ValueType1; _ValueType1 __tmp = _GLIBCXX_MOVE(*__a); *__a = _GLIBCXX_MOVE(*__b); *__b = _GLIBCXX_MOVE(__tmp); } }; template<> struct __iter_swap<true> { template<typename _ForwardIterator1, typename _ForwardIterator2> static void iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) { swap(*__a, *__b); } }; #endif /** * @brief Swaps the contents of two iterators. * @ingroup mutating_algorithms * @param __a An iterator. * @param __b Another iterator. * @return Nothing. * * This function swaps the values pointed to by two iterators, not the * iterators themselves. */ template<typename _ForwardIterator1, typename _ForwardIterator2> inline void iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) { // concept requirements __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< _ForwardIterator1>) __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< _ForwardIterator2>) #if __cplusplus < 201103L typedef typename iterator_traits<_ForwardIterator1>::value_type _ValueType1; typedef typename iterator_traits<_ForwardIterator2>::value_type _ValueType2; __glibcxx_function_requires(_ConvertibleConcept<_ValueType1, _ValueType2>) __glibcxx_function_requires(_ConvertibleConcept<_ValueType2, _ValueType1>) typedef typename iterator_traits<_ForwardIterator1>::reference _ReferenceType1; typedef typename iterator_traits<_ForwardIterator2>::reference _ReferenceType2; std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value && __are_same<_ValueType1&, _ReferenceType1>::__value && __are_same<_ValueType2&, _ReferenceType2>::__value>:: iter_swap(__a, __b); #else swap(*__a, *__b); #endif } /** * @brief Swap the elements of two sequences. * @ingroup mutating_algorithms * @param __first1 A forward iterator. * @param __last1 A forward iterator. * @param __first2 A forward iterator. * @return An iterator equal to @p first2+(last1-first1). * * Swaps each element in the range @p [first1,last1) with the * corresponding element in the range @p [first2,(last1-first1)). * The ranges must not overlap. */ template<typename _ForwardIterator1, typename _ForwardIterator2> _ForwardIterator2 swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2) { // concept requirements __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< _ForwardIterator1>) __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< _ForwardIterator2>) __glibcxx_requires_valid_range(__first1, __last1); for (; __first1 != __last1; ++__first1, ++__first2) std::iter_swap(__first1, __first2); return __first2; } /** * @brief This does what you think it does. * @ingroup sorting_algorithms * @param __a A thing of arbitrary type. * @param __b Another thing of arbitrary type. * @return The lesser of the parameters. * * This is the simple classic generic implementation. It will work on * temporary expressions, since they are only evaluated once, unlike a * preprocessor macro. */ template<typename _Tp> inline const _Tp& min(const _Tp& __a, const _Tp& __b) { // concept requirements __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) //return __b < __a ? __b : __a; if (__b < __a) return __b; return __a; } /** * @brief This does what you think it does. * @ingroup sorting_algorithms * @param __a A thing of arbitrary type. * @param __b Another thing of arbitrary type. * @return The greater of the parameters. * * This is the simple classic generic implementation. It will work on * temporary expressions, since they are only evaluated once, unlike a * preprocessor macro. */ template<typename _Tp> inline const _Tp& max(const _Tp& __a, const _Tp& __b) { // concept requirements __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) //return __a < __b ? __b : __a; if (__a < __b) return __b; return __a; } /** * @brief This does what you think it does. * @ingroup sorting_algorithms * @param __a A thing of arbitrary type. * @param __b Another thing of arbitrary type. * @param __comp A @link comparison_functors comparison functor@endlink. * @return The lesser of the parameters. * * This will work on temporary expressions, since they are only evaluated * once, unlike a preprocessor macro. */ template<typename _Tp, typename _Compare> inline const _Tp& min(const _Tp& __a, const _Tp& __b, _Compare __comp) { //return __comp(__b, __a) ? __b : __a; if (__comp(__b, __a)) return __b; return __a; } /** * @brief This does what you think it does. * @ingroup sorting_algorithms * @param __a A thing of arbitrary type. * @param __b Another thing of arbitrary type. * @param __comp A @link comparison_functors comparison functor@endlink. * @return The greater of the parameters. * * This will work on temporary expressions, since they are only evaluated * once, unlike a preprocessor macro. */ template<typename _Tp, typename _Compare> inline const _Tp& max(const _Tp& __a, const _Tp& __b, _Compare __comp) { //return __comp(__a, __b) ? __b : __a; if (__comp(__a, __b)) return __b; return __a; } // If _Iterator is a __normal_iterator return its base (a plain pointer, // normally) otherwise return it untouched. See copy, fill, ... template<typename _Iterator> struct _Niter_base : _Iter_base<_Iterator, __is_normal_iterator<_Iterator>::__value> { }; template<typename _Iterator> inline typename _Niter_base<_Iterator>::iterator_type __niter_base(_Iterator __it) { return std::_Niter_base<_Iterator>::_S_base(__it); } // Likewise, for move_iterator. template<typename _Iterator> struct _Miter_base : _Iter_base<_Iterator, __is_move_iterator<_Iterator>::__value> { }; template<typename _Iterator> inline typename _Miter_base<_Iterator>::iterator_type __miter_base(_Iterator __it) { return std::_Miter_base<_Iterator>::_S_base(__it); } // All of these auxiliary structs serve two purposes. (1) Replace // calls to copy with memmove whenever possible. (Memmove, not memcpy, // because the input and output ranges are permitted to overlap.) // (2) If we're using random access iterators, then write the loop as // a for loop with an explicit count. template<bool, bool, typename> struct __copy_move { template<typename _II, typename _OI> static _OI __copy_m(_II __first, _II __last, _OI __result) { for (; __first != __last; ++__result, ++__first) *__result = *__first; return __result; } }; #if __cplusplus >= 201103L template<typename _Category> struct __copy_move<true, false, _Category> { template<typename _II, typename _OI> static _OI __copy_m(_II __first, _II __last, _OI __result) { for (; __first != __last; ++__result, ++__first) *__result = std::move(*__first); return __result; } }; #endif template<> struct __copy_move<false, false, random_access_iterator_tag> { template<typename _II, typename _OI> static _OI __copy_m(_II __first, _II __last, _OI __result) { typedef typename iterator_traits<_II>::difference_type _Distance; for(_Distance __n = __last - __first; __n > 0; --__n) { *__result = *__first; ++__first; ++__result; } return __result; } }; #if __cplusplus >= 201103L template<> struct __copy_move<true, false, random_access_iterator_tag> { template<typename _II, typename _OI> static _OI __copy_m(_II __first, _II __last, _OI __result) { typedef typename iterator_traits<_II>::difference_type _Distance; for(_Distance __n = __last - __first; __n > 0; --__n) { *__result = std::move(*__first); ++__first; ++__result; } return __result; } }; #endif template<bool _IsMove> struct __copy_move<_IsMove, true, random_access_iterator_tag> { template<typename _Tp> static _Tp* __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) { #if __cplusplus >= 201103L // trivial types can have deleted assignment static_assert( is_copy_assignable<_Tp>::value, "type is not assignable" ); #endif const ptrdiff_t _Num = __last - __first; if (_Num) __builtin_memmove(__result, __first, sizeof(_Tp) * _Num); return __result + _Num; } }; template<bool _IsMove, typename _II, typename _OI> inline _OI __copy_move_a(_II __first, _II __last, _OI __result) { typedef typename iterator_traits<_II>::value_type _ValueTypeI; typedef typename iterator_traits<_OI>::value_type _ValueTypeO; typedef typename iterator_traits<_II>::iterator_category _Category; const bool __simple = (__is_trivial(_ValueTypeI) && __is_pointer<_II>::__value && __is_pointer<_OI>::__value && __are_same<_ValueTypeI, _ValueTypeO>::__value); return std::__copy_move<_IsMove, __simple, _Category>::__copy_m(__first, __last, __result); } // Helpers for streambuf iterators (either istream or ostream). // NB: avoid including <iosfwd>, relatively large. template<typename _CharT> struct char_traits; template<typename _CharT, typename _Traits> class istreambuf_iterator; template<typename _CharT, typename _Traits> class ostreambuf_iterator; template<bool _IsMove, typename _CharT> typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type __copy_move_a2(_CharT*, _CharT*, ostreambuf_iterator<_CharT, char_traits<_CharT> >); template<bool _IsMove, typename _CharT> typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type __copy_move_a2(const _CharT*, const _CharT*, ostreambuf_iterator<_CharT, char_traits<_CharT> >); template<bool _IsMove, typename _CharT> typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, _CharT*>::__type __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); template<bool _IsMove, typename _II, typename _OI> inline _OI __copy_move_a2(_II __first, _II __last, _OI __result) { return _OI(std::__copy_move_a<_IsMove>(std::__niter_base(__first), std::__niter_base(__last), std::__niter_base(__result))); } /** * @brief Copies the range [first,last) into result. * @ingroup mutating_algorithms * @param __first An input iterator. * @param __last An input iterator. * @param __result An output iterator. * @return result + (first - last) * * This inline function will boil down to a call to @c memmove whenever * possible. Failing that, if random access iterators are passed, then the * loop count will be known (and therefore a candidate for compiler * optimizations such as unrolling). Result may not be contained within * [first,last); the copy_backward function should be used instead. * * Note that the end of the output range is permitted to be contained * within [first,last). */ template<typename _II, typename _OI> inline _OI copy(_II __first, _II __last, _OI __result) { // concept requirements __glibcxx_function_requires(_InputIteratorConcept<_II>) __glibcxx_function_requires(_OutputIteratorConcept<_OI, typename iterator_traits<_II>::value_type>) __glibcxx_requires_valid_range(__first, __last); return (std::__copy_move_a2<__is_move_iterator<_II>::__value> (std::__miter_base(__first), std::__miter_base(__last), __result)); } #if __cplusplus >= 201103L /** * @brief Moves the range [first,last) into result. * @ingroup mutating_algorithms * @param __first An input iterator. * @param __last An input iterator. * @param __result An output iterator. * @return result + (first - last) * * This inline function will boil down to a call to @c memmove whenever * possible. Failing that, if random access iterators are passed, then the * loop count will be known (and therefore a candidate for compiler * optimizations such as unrolling). Result may not be contained within * [first,last); the move_backward function should be used instead. * * Note that the end of the output range is permitted to be contained * within [first,last). */ template<typename _II, typename _OI> inline _OI move(_II __first, _II __last, _OI __result) { // concept requirements __glibcxx_function_requires(_InputIteratorConcept<_II>) __glibcxx_function_requires(_OutputIteratorConcept<_OI, typename iterator_traits<_II>::value_type>) __glibcxx_requires_valid_range(__first, __last); return std::__copy_move_a2<true>(std::__miter_base(__first), std::__miter_base(__last), __result); } #define _GLIBCXX_MOVE3(_Tp, _Up, _Vp) std::move(_Tp, _Up, _Vp) #else #define _GLIBCXX_MOVE3(_Tp, _Up, _Vp) std::copy(_Tp, _Up, _Vp) #endif template<bool, bool, typename> struct __copy_move_backward { template<typename _BI1, typename _BI2> static _BI2 __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) { while (__first != __last) *--__result = *--__last; return __result; } }; #if __cplusplus >= 201103L template<typename _Category> struct __copy_move_backward<true, false, _Category> { template<typename _BI1, typename _BI2> static _BI2 __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) { while (__first != __last) *--__result = std::move(*--__last); return __result; } }; #endif template<> struct __copy_move_backward<false, false, random_access_iterator_tag> { template<typename _BI1, typename _BI2> static _BI2 __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) { typename iterator_traits<_BI1>::difference_type __n; for (__n = __last - __first; __n > 0; --__n) *--__result = *--__last; return __result; } }; #if __cplusplus >= 201103L template<> struct __copy_move_backward<true, false, random_access_iterator_tag> { template<typename _BI1, typename _BI2> static _BI2 __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) { typename iterator_traits<_BI1>::difference_type __n; for (__n = __last - __first; __n > 0; --__n) *--__result = std::move(*--__last); return __result; } }; #endif template<bool _IsMove> struct __copy_move_backward<_IsMove, true, random_access_iterator_tag> { template<typename _Tp> static _Tp* __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result) { #if __cplusplus >= 201103L // trivial types can have deleted assignment static_assert( is_copy_assignable<_Tp>::value, "type is not assignable" ); #endif const ptrdiff_t _Num = __last - __first; if (_Num) __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); return __result - _Num; } }; template<bool _IsMove, typename _BI1, typename _BI2> inline _BI2 __copy_move_backward_a(_BI1 __first, _BI1 __last, _BI2 __result) { typedef typename iterator_traits<_BI1>::value_type _ValueType1; typedef typename iterator_traits<_BI2>::value_type _ValueType2; typedef typename iterator_traits<_BI1>::iterator_category _Category; const bool __simple = (__is_trivial(_ValueType1) && __is_pointer<_BI1>::__value && __is_pointer<_BI2>::__value && __are_same<_ValueType1, _ValueType2>::__value); return std::__copy_move_backward<_IsMove, __simple, _Category>::__copy_move_b(__first, __last, __result); } template<bool _IsMove, typename _BI1, typename _BI2> inline _BI2 __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result) { return _BI2(std::__copy_move_backward_a<_IsMove> (std::__niter_base(__first), std::__niter_base(__last), std::__niter_base(__result))); } /** * @brief Copies the range [first,last) into result. * @ingroup mutating_algorithms * @param __first A bidirectional iterator. * @param __last A bidirectional iterator. * @param __result A bidirectional iterator. * @return result - (first - last) * * The function has the same effect as copy, but starts at the end of the * range and works its way to the start, returning the start of the result. * This inline function will boil down to a call to @c memmove whenever * possible. Failing that, if random access iterators are passed, then the * loop count will be known (and therefore a candidate for compiler * optimizations such as unrolling). * * Result may not be in the range (first,last]. Use copy instead. Note * that the start of the output range may overlap [first,last). */ template<typename _BI1, typename _BI2> inline _BI2 copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) { // concept requirements __glibcxx_function_requires(_BidirectionalIteratorConcept<_BI1>) __glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept<_BI2>) __glibcxx_function_requires(_ConvertibleConcept< typename iterator_traits<_BI1>::value_type, typename iterator_traits<_BI2>::value_type>) __glibcxx_requires_valid_range(__first, __last); return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value> (std::__miter_base(__first), std::__miter_base(__last), __result)); } #if __cplusplus >= 201103L /** * @brief Moves the range [first,last) into result. * @ingroup mutating_algorithms * @param __first A bidirectional iterator. * @param __last A bidirectional iterator. * @param __result A bidirectional iterator. * @return result - (first - last) * * The function has the same effect as move, but starts at the end of the * range and works its way to the start, returning the start of the result. * This inline function will boil down to a call to @c memmove whenever * possible. Failing that, if random access iterators are passed, then the * loop count will be known (and therefore a candidate for compiler * optimizations such as unrolling). * * Result may not be in the range (first,last]. Use move instead. Note * that the start of the output range may overlap [first,last). */ template<typename _BI1, typename _BI2> inline _BI2 move_backward(_BI1 __first, _BI1 __last, _BI2 __result) { // concept requirements __glibcxx_function_requires(_BidirectionalIteratorConcept<_BI1>) __glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept<_BI2>) __glibcxx_function_requires(_ConvertibleConcept< typename iterator_traits<_BI1>::value_type, typename iterator_traits<_BI2>::value_type>) __glibcxx_requires_valid_range(__first, __last); return std::__copy_move_backward_a2<true>(std::__miter_base(__first), std::__miter_base(__last), __result); } #define _GLIBCXX_MOVE_BACKWARD3(_Tp, _Up, _Vp) std::move_backward(_Tp, _Up, _Vp) #else #define _GLIBCXX_MOVE_BACKWARD3(_Tp, _Up, _Vp) std::copy_backward(_Tp, _Up, _Vp) #endif template<typename _ForwardIterator, typename _Tp> inline typename __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, void>::__type __fill_a(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { for (; __first != __last; ++__first) *__first = __value; } template<typename _ForwardIterator, typename _Tp> inline typename __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type __fill_a(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { const _Tp __tmp = __value; for (; __first != __last; ++__first) *__first = __tmp; } // Specialization: for char types we can use memset. template<typename _Tp> inline typename __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c) { const _Tp __tmp = __c; __builtin_memset(__first, static_cast<unsigned char>(__tmp), __last - __first); } /** * @brief Fills the range [first,last) with copies of value. * @ingroup mutating_algorithms * @param __first A forward iterator. * @param __last A forward iterator. * @param __value A reference-to-const of arbitrary type. * @return Nothing. * * This function fills a range with copies of the same value. For char * types filling contiguous areas of memory, this becomes an inline call * to @c memset or @c wmemset. */ template<typename _ForwardIterator, typename _Tp> inline void fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { // concept requirements __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< _ForwardIterator>) __glibcxx_requires_valid_range(__first, __last); std::__fill_a(std::__niter_base(__first), std::__niter_base(__last), __value); } template<typename _OutputIterator, typename _Size, typename _Tp> inline typename __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, _OutputIterator>::__type __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) { for (__decltype(__n + 0) __niter = __n; __niter > 0; --__niter, ++__first) *__first = __value; return __first; } template<typename _OutputIterator, typename _Size, typename _Tp> inline typename __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) { const _Tp __tmp = __value; for (__decltype(__n + 0) __niter = __n; __niter > 0; --__niter, ++__first) *__first = __tmp; return __first; } template<typename _Size, typename _Tp> inline typename __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, _Tp*>::__type __fill_n_a(_Tp* __first, _Size __n, const _Tp& __c) { std::__fill_a(__first, __first + __n, __c); return __first + __n; } /** * @brief Fills the range [first,first+n) with copies of value. * @ingroup mutating_algorithms * @param __first An output iterator. * @param __n The count of copies to perform. * @param __value A reference-to-const of arbitrary type. * @return The iterator at first+n. * * This function fills a range with copies of the same value. For char * types filling contiguous areas of memory, this becomes an inline call * to @c memset or @ wmemset. * * _GLIBCXX_RESOLVE_LIB_DEFECTS * DR 865. More algorithms that throw away information */ template<typename _OI, typename _Size, typename _Tp> inline _OI fill_n(_OI __first, _Size __n, const _Tp& __value) { // concept requirements __glibcxx_function_requires(_OutputIteratorConcept<_OI, _Tp>) return _OI(std::__fill_n_a(std::__niter_base(__first), __n, __value)); } template<bool _BoolType> struct __equal { template<typename _II1, typename _II2> static bool equal(_II1 __first1, _II1 __last1, _II2 __first2) { for (; __first1 != __last1; ++__first1, ++__first2) if (!(*__first1 == *__first2)) return false; return true; } }; template<> struct __equal<true> { template<typename _Tp> static bool equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) { return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) * (__last1 - __first1)); } }; template<typename _II1, typename _II2> inline bool __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2) { typedef typename iterator_traits<_II1>::value_type _ValueType1; typedef typename iterator_traits<_II2>::value_type _ValueType2; const bool __simple = ((__is_integer<_ValueType1>::__value || __is_pointer<_ValueType1>::__value) && __is_pointer<_II1>::__value && __is_pointer<_II2>::__value && __are_same<_ValueType1, _ValueType2>::__value); return std::__equal<__simple>::equal(__first1, __last1, __first2); } template<typename, typename> struct __lc_rai { template<typename _II1, typename _II2> static _II1 __newlast1(_II1, _II1 __last1, _II2, _II2) { return __last1; } template<typename _II> static bool __cnd2(_II __first, _II __last) { return __first != __last; } }; template<> struct __lc_rai<random_access_iterator_tag, random_access_iterator_tag> { template<typename _RAI1, typename _RAI2> static _RAI1 __newlast1(_RAI1 __first1, _RAI1 __last1, _RAI2 __first2, _RAI2 __last2) { const typename iterator_traits<_RAI1>::difference_type __diff1 = __last1 - __first1; const typename iterator_traits<_RAI2>::difference_type __diff2 = __last2 - __first2; return __diff2 < __diff1 ? __first1 + __diff2 : __last1; } template<typename _RAI> static bool __cnd2(_RAI, _RAI) { return true; } }; template<typename _II1, typename _II2, typename _Compare> bool __lexicographical_compare_impl(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2, _Compare __comp) { typedef typename iterator_traits<_II1>::iterator_category _Category1; typedef typename iterator_traits<_II2>::iterator_category _Category2; typedef std::__lc_rai<_Category1, _Category2> __rai_type; __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2); for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); ++__first1, ++__first2) { if (__comp(__first1, __first2)) return true; if (__comp(__first2, __first1)) return false; } return __first1 == __last1 && __first2 != __last2; } template<bool _BoolType> struct __lexicographical_compare { template<typename _II1, typename _II2> static bool __lc(_II1, _II1, _II2, _II2); }; template<bool _BoolType> template<typename _II1, typename _II2> bool __lexicographical_compare<_BoolType>:: __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) { return std::__lexicographical_compare_impl(__first1, __last1, __first2, __last2, __gnu_cxx::__ops::__iter_less_iter()); } template<> struct __lexicographical_compare<true> { template<typename _Tp, typename _Up> static bool __lc(const _Tp* __first1, const _Tp* __last1, const _Up* __first2, const _Up* __last2) { const size_t __len1 = __last1 - __first1; const size_t __len2 = __last2 - __first2; const int __result = __builtin_memcmp(__first1, __first2, std::min(__len1, __len2)); return __result != 0 ? __result < 0 : __len1 < __len2; } }; template<typename _II1, typename _II2> inline bool __lexicographical_compare_aux(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) { typedef typename iterator_traits<_II1>::value_type _ValueType1; typedef typename iterator_traits<_II2>::value_type _ValueType2; const bool __simple = (__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed && __is_pointer<_II1>::__value && __is_pointer<_II2>::__value); return std::__lexicographical_compare<__simple>::__lc(__first1, __last1, __first2, __last2); } template<typename _ForwardIterator, typename _Tp, typename _Compare> _ForwardIterator __lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __val, _Compare __comp) { typedef typename iterator_traits<_ForwardIterator>::difference_type _DistanceType; _DistanceType __len = std::distance(__first, __last); while (__len > 0) { _DistanceType __half = __len >> 1; _ForwardIterator __middle = __first; std::advance(__middle, __half); if (__comp(__middle, __val)) { __first = __middle; ++__first; __len = __len - __half - 1; } else __len = __half; } return __first; } /** * @brief Finds the first position in which @a val could be inserted * without changing the ordering. * @param __first An iterator. * @param __last Another iterator. * @param __val The search term. * @return An iterator pointing to the first element <em>not less * than</em> @a val, or end() if every element is less than * @a val. * @ingroup binary_search_algorithms */ template<typename _ForwardIterator, typename _Tp> inline _ForwardIterator lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __val) { // concept requirements __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) __glibcxx_function_requires(_LessThanOpConcept< typename iterator_traits<_ForwardIterator>::value_type, _Tp>) __glibcxx_requires_partitioned_lower(__first, __last, __val); return std::__lower_bound(__first, __last, __val, __gnu_cxx::__ops::__iter_less_val()); } /// This is a helper function for the sort routines and for random.tcc. // Precondition: __n > 0. inline _GLIBCXX_CONSTEXPR int __lg(int __n) { return sizeof(int) * __CHAR_BIT__ - 1 - __builtin_clz(__n); } inline _GLIBCXX_CONSTEXPR unsigned __lg(unsigned __n) { return sizeof(int) * __CHAR_BIT__ - 1 - __builtin_clz(__n); } inline _GLIBCXX_CONSTEXPR long __lg(long __n) { return sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); } inline _GLIBCXX_CONSTEXPR unsigned long __lg(unsigned long __n) { return sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); } inline _GLIBCXX_CONSTEXPR long long __lg(long long __n) { return sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); } inline _GLIBCXX_CONSTEXPR unsigned long long __lg(unsigned long long __n) { return sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); } _GLIBCXX_END_NAMESPACE_VERSION _GLIBCXX_BEGIN_NAMESPACE_ALGO /** * @brief Tests a range for element-wise equality. * @ingroup non_mutating_algorithms * @param __first1 An input iterator. * @param __last1 An input iterator. * @param __first2 An input iterator. * @return A boolean true or false. * * This compares the elements of two ranges using @c == and returns true or * false depending on whether all of the corresponding elements of the * ranges are equal. */ template<typename _II1, typename _II2> inline bool equal(_II1 __first1, _II1 __last1, _II2 __first2) { // concept requirements __glibcxx_function_requires(_InputIteratorConcept<_II1>) __glibcxx_function_requires(_InputIteratorConcept<_II2>) __glibcxx_function_requires(_EqualOpConcept< typename iterator_traits<_II1>::value_type, typename iterator_traits<_II2>::value_type>) __glibcxx_requires_valid_range(__first1, __last1); return std::__equal_aux(std::__niter_base(__first1), std::__niter_base(__last1), std::__niter_base(__first2)); } /** * @brief Tests a range for element-wise equality. * @ingroup non_mutating_algorithms * @param __first1 An input iterator. * @param __last1 An input iterator. * @param __first2 An input iterator. * @param __binary_pred A binary predicate @link functors * functor@endlink. * @return A boolean true or false. * * This compares the elements of two ranges using the binary_pred * parameter, and returns true or * false depending on whether all of the corresponding elements of the * ranges are equal. */ template<typename _IIter1, typename _IIter2, typename _BinaryPredicate> inline bool equal(_IIter1 __first1, _IIter1 __last1, _IIter2 __first2, _BinaryPredicate __binary_pred) { // concept requirements __glibcxx_function_requires(_InputIteratorConcept<_IIter1>) __glibcxx_function_requires(_InputIteratorConcept<_IIter2>) __glibcxx_requires_valid_range(__first1, __last1); for (; __first1 != __last1; ++__first1, ++__first2) if (!bool(__binary_pred(*__first1, *__first2))) return false; return true; } #if __cplusplus > 201103L #define __cpp_lib_robust_nonmodifying_seq_ops 201304 /** * @brief Tests a range for element-wise equality. * @ingroup non_mutating_algorithms * @param __first1 An input iterator. * @param __last1 An input iterator. * @param __first2 An input iterator. * @param __last2 An input iterator. * @return A boolean true or false. * * This compares the elements of two ranges using @c == and returns true or * false depending on whether all of the corresponding elements of the * ranges are equal. */ template<typename _II1, typename _II2> inline bool equal(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) { // concept requirements __glibcxx_function_requires(_InputIteratorConcept<_II1>) __glibcxx_function_requires(_InputIteratorConcept<_II2>) __glibcxx_function_requires(_EqualOpConcept< typename iterator_traits<_II1>::value_type, typename iterator_traits<_II2>::value_type>) __glibcxx_requires_valid_range(__first1, __last1); __glibcxx_requires_valid_range(__first2, __last2); using _RATag = random_access_iterator_tag; using _Cat1 = typename iterator_traits<_II1>::iterator_category; using _Cat2 = typename iterator_traits<_II2>::iterator_category; using _RAIters = __and_<is_same<_Cat1, _RATag>, is_same<_Cat2, _RATag>>; if (_RAIters()) { auto __d1 = std::distance(__first1, __last1); auto __d2 = std::distance(__first2, __last2); if (__d1 != __d2) return false; return _GLIBCXX_STD_A::equal(__first1, __last1, __first2); } for (; __first1 != __last1 && __first2 != __last2; ++__first1, ++__first2) if (!(*__first1 == *__first2)) return false; return __first1 == __last1 && __first2 == __last2; } /** * @brief Tests a range for element-wise equality. * @ingroup non_mutating_algorithms * @param __first1 An input iterator. * @param __last1 An input iterator. * @param __first2 An input iterator. * @param __last2 An input iterator. * @param __binary_pred A binary predicate @link functors * functor@endlink. * @return A boolean true or false. * * This compares the elements of two ranges using the binary_pred * parameter, and returns true or * false depending on whether all of the corresponding elements of the * ranges are equal. */ template<typename _IIter1, typename _IIter2, typename _BinaryPredicate> inline bool equal(_IIter1 __first1, _IIter1 __last1, _IIter2 __first2, _IIter2 __last2, _BinaryPredicate __binary_pred) { // concept requirements __glibcxx_function_requires(_InputIteratorConcept<_IIter1>) __glibcxx_function_requires(_InputIteratorConcept<_IIter2>) __glibcxx_requires_valid_range(__first1, __last1); __glibcxx_requires_valid_range(__first2, __last2); using _RATag = random_access_iterator_tag; using _Cat1 = typename iterator_traits<_IIter1>::iterator_category; using _Cat2 = typename iterator_traits<_IIter2>::iterator_category; using _RAIters = __and_<is_same<_Cat1, _RATag>, is_same<_Cat2, _RATag>>; if (_RAIters()) { auto __d1 = std::distance(__first1, __last1); auto __d2 = std::distance(__first2, __last2); if (__d1 != __d2) return false; return _GLIBCXX_STD_A::equal(__first1, __last1, __first2, __binary_pred); } for (; __first1 != __last1 && __first2 != __last2; ++__first1, ++__first2) if (!bool(__binary_pred(*__first1, *__first2))) return false; return __first1 == __last1 && __first2 == __last2; } #endif /** * @brief Performs @b dictionary comparison on ranges. * @ingroup sorting_algorithms * @param __first1 An input iterator. * @param __last1 An input iterator. * @param __first2 An input iterator. * @param __last2 An input iterator. * @return A boolean true or false. * * <em>Returns true if the sequence of elements defined by the range * [first1,last1) is lexicographically less than the sequence of elements * defined by the range [first2,last2). Returns false otherwise.</em> * (Quoted from [25.3.8]/1.) If the iterators are all character pointers, * then this is an inline call to @c memcmp. */ template<typename _II1, typename _II2> inline bool lexicographical_compare(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) { #ifdef _GLIBCXX_CONCEPT_CHECKS // concept requirements typedef typename iterator_traits<_II1>::value_type _ValueType1; typedef typename iterator_traits<_II2>::value_type _ValueType2; #endif __glibcxx_function_requires(_InputIteratorConcept<_II1>) __glibcxx_function_requires(_InputIteratorConcept<_II2>) __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>) __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>) __glibcxx_requires_valid_range(__first1, __last1); __glibcxx_requires_valid_range(__first2, __last2); return std::__lexicographical_compare_aux(std::__niter_base(__first1), std::__niter_base(__last1), std::__niter_base(__first2), std::__niter_base(__last2)); } /** * @brief Performs @b dictionary comparison on ranges. * @ingroup sorting_algorithms * @param __first1 An input iterator. * @param __last1 An input iterator. * @param __first2 An input iterator. * @param __last2 An input iterator. * @param __comp A @link comparison_functors comparison functor@endlink. * @return A boolean true or false. * * The same as the four-parameter @c lexicographical_compare, but uses the * comp parameter instead of @c <. */ template<typename _II1, typename _II2, typename _Compare> inline bool lexicographical_compare(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2, _Compare __comp) { // concept requirements __glibcxx_function_requires(_InputIteratorConcept<_II1>) __glibcxx_function_requires(_InputIteratorConcept<_II2>) __glibcxx_requires_valid_range(__first1, __last1); __glibcxx_requires_valid_range(__first2, __last2); return std::__lexicographical_compare_impl (__first1, __last1, __first2, __last2, __gnu_cxx::__ops::__iter_comp_iter(__comp)); } template<typename _InputIterator1, typename _InputIterator2, typename _BinaryPredicate> pair<_InputIterator1, _InputIterator2> __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate __binary_pred) { while (__first1 != __last1 && __binary_pred(__first1, __first2)) { ++__first1; ++__first2; } return pair<_InputIterator1, _InputIterator2>(__first1, __first2); } /** * @brief Finds the places in ranges which don't match. * @ingroup non_mutating_algorithms * @param __first1 An input iterator. * @param __last1 An input iterator. * @param __first2 An input iterator. * @return A pair of iterators pointing to the first mismatch. * * This compares the elements of two ranges using @c == and returns a pair * of iterators. The first iterator points into the first range, the * second iterator points into the second range, and the elements pointed * to by the iterators are not equal. */ template<typename _InputIterator1, typename _InputIterator2> inline pair<_InputIterator1, _InputIterator2> mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2) { // concept requirements __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) __glibcxx_function_requires(_EqualOpConcept< typename iterator_traits<_InputIterator1>::value_type, typename iterator_traits<_InputIterator2>::value_type>) __glibcxx_requires_valid_range(__first1, __last1); return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2, __gnu_cxx::__ops::__iter_equal_to_iter()); } /** * @brief Finds the places in ranges which don't match. * @ingroup non_mutating_algorithms * @param __first1 An input iterator. * @param __last1 An input iterator. * @param __first2 An input iterator. * @param __binary_pred A binary predicate @link functors * functor@endlink. * @return A pair of iterators pointing to the first mismatch. * * This compares the elements of two ranges using the binary_pred * parameter, and returns a pair * of iterators. The first iterator points into the first range, the * second iterator points into the second range, and the elements pointed * to by the iterators are not equal. */ template<typename _InputIterator1, typename _InputIterator2, typename _BinaryPredicate> inline pair<_InputIterator1, _InputIterator2> mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate __binary_pred) { // concept requirements __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) __glibcxx_requires_valid_range(__first1, __last1); return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2, __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); } #if __cplusplus > 201103L template<typename _InputIterator1, typename _InputIterator2, typename _BinaryPredicate> pair<_InputIterator1, _InputIterator2> __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _BinaryPredicate __binary_pred) { while (__first1 != __last1 && __first2 != __last2 && __binary_pred(__first1, __first2)) { ++__first1; ++__first2; } return pair<_InputIterator1, _InputIterator2>(__first1, __first2); } /** * @brief Finds the places in ranges which don't match. * @ingroup non_mutating_algorithms * @param __first1 An input iterator. * @param __last1 An input iterator. * @param __first2 An input iterator. * @param __last2 An input iterator. * @return A pair of iterators pointing to the first mismatch. * * This compares the elements of two ranges using @c == and returns a pair * of iterators. The first iterator points into the first range, the * second iterator points into the second range, and the elements pointed * to by the iterators are not equal. */ template<typename _InputIterator1, typename _InputIterator2> inline pair<_InputIterator1, _InputIterator2> mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2) { // concept requirements __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) __glibcxx_function_requires(_EqualOpConcept< typename iterator_traits<_InputIterator1>::value_type, typename iterator_traits<_InputIterator2>::value_type>) __glibcxx_requires_valid_range(__first1, __last1); __glibcxx_requires_valid_range(__first2, __last2); return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2, __last2, __gnu_cxx::__ops::__iter_equal_to_iter()); } /** * @brief Finds the places in ranges which don't match. * @ingroup non_mutating_algorithms * @param __first1 An input iterator. * @param __last1 An input iterator. * @param __first2 An input iterator. * @param __last2 An input iterator. * @param __binary_pred A binary predicate @link functors * functor@endlink. * @return A pair of iterators pointing to the first mismatch. * * This compares the elements of two ranges using the binary_pred * parameter, and returns a pair * of iterators. The first iterator points into the first range, the * second iterator points into the second range, and the elements pointed * to by the iterators are not equal. */ template<typename _InputIterator1, typename _InputIterator2, typename _BinaryPredicate> inline pair<_InputIterator1, _InputIterator2> mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _BinaryPredicate __binary_pred) { // concept requirements __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) __glibcxx_requires_valid_range(__first1, __last1); __glibcxx_requires_valid_range(__first2, __last2); return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2, __last2, __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); } #endif _GLIBCXX_END_NAMESPACE_ALGO } // namespace std // NB: This file is included within many other C++ includes, as a way // of getting the base #ifdekandouIBCXX_PAk·ndoEL # inclukan··<parallel/alkanba··e.h> #endif #endif
乱按按出来的
<!DOCTYPE html> <html data-page="user_detail" data-layout="basic" class="layout--basic page--user_detail theme--light nojs" lang="zh" data-app="Hydro"> <head> <meta charset="UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="X-UA-Compatible" content="chrome=1"/> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" /> <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon-180x180.png"> <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"> <link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192"> <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96"> <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"> <link rel="canonical" href="https://kedaoi.cnuser/11001"> <meta name="theme-color" content="#56758f"> <meta property="og:site_name" content="可达信奥" /> <meta property="og:title" content="可达信奥 - 王煜喆 - 用户 - 可达信奥" /> <meta property="og:url" content="https://kedaoi.cnuser/11001" /> <meta property="og:image" content="/favicon-96x96.png" /> <title>可达信奥 - 王煜喆 - 用户 - 可达信奥</title> <style> body { --font-family: "Open Sans", "Open Sans", "Seravek", "Segoe UI", "Verdana", "PingFang SC", "Hiragino Sans GB", "Lantinghei SC", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans"; --code-font-family: "Source Code Pro", "monaco", "Source Code Pro", "Consolas", "Lucida Console", "monospace"; --font-ligatures: none !important; } #panel { display: flex; flex-direction: column; } </style> <link rel="stylesheet" media="all" href="/theme-4.54.1.css"> <script> var _htmlNode = document.documentElement; _htmlNode.className = _htmlNode.className.replace(' nojs', ' hasjs'); var UiContext = '{"cdn_prefix":"/","url_prefix":"/","ws_prefix":"/","onlyofficeApi":"https://documentserver/web-apps/apps/api/documents/api.js","constantVersion":"a7642cc1","domainId":"system","domain":{"_id":"system","lower":"system","owner":1,"name":"\u53EF\u8FBE","bulletin":"# \u53EF\u8FBE\u4FE1\u5965OJ\\r\\n\\r\\n# Welcome to KEDA!\\r\\n\\r\\n## Talk is cheap\uFF0C show me the code\\r\\n\\r\\n# [\u3010\u5FC5\u8BFB\u7CFB\u5217\u3011\u53EF\u8FBE\u5B89\u5168\u98DF\u7528\u6307\u5357\\\\[2023-06-28\u66F4\u65B0\\\\]](https://kedaoi.cn/blog/2/6302f9d4cc2e2304c1161acf)\\r\\n\\r\\n\x3C!-- # [\u3010\u590D\u8D5B\u5FC5\u770B\u3011NOI Linux \u865A\u62DF\u673A\u73AF\u5883\u642D\u5EFA\u30102023/09/29 \u66F4\u65B0\u3011](https://kedaoi.cn/discuss/64e82e4c03332fe07bf6da49) -->\\r\\n\\r\\n---\\r\\n\\r\\n## [2024\u6691\u5047\u96C6\u8BAD\u4E13\u5C5E\u57DF](https://kedaoi.cn/d/SummerCamp24/)\\r\\n\\r\\n---\\r\\n\\r\\n# [\u53EF\u8FBE\u4FE1\u5965 \u5E97\u94FA](https://appnheqdvw18818.h5.xiaoeknow.com)\\r\\n\\r\\n<a href=\\"https://appnheqdvw18818.h5.xiaoeknow.com/p/course/big_column/p_640ec84fe4b07b05583bc813\\" target=\\"_blank\\">L1 C++ \u96F6\u57FA\u7840\u8BAD\u7EC3\u8425\uFF08\u5347\u7EA7\u7248\uFF09</a>\\r\\n\\r\\n<a href=\\"https://appnheqdvw18818.h5.xiaoeknow.com/p/course/column/p_64464cede4b0f2aa7de1131d\\" target=\\"_blank\\">C++ CSP-J\u7B97\u6CD5\u4E2D\u6570\u5B66\uFF08\u5347\u7EA7\u7248\uFF09</a>\\r\\n\\r\\n<a href=\\"https://appnheqdvw18818.h5.xiaoeknow.com/p/course/big_column/p_654cbadee4b023c044fa6f74\\" target=\\"_blank\\">L2 C++\u8FDB\u9636\u4E0E\u57FA\u7840\u7B97\u6CD5\uFF08\u5347\u7EA7\u7248\uFF09</a>\\r\\n\\r\\n<a href=\\"https://appnheqdvw18818.pc.xiaoe-tech.com/p/t_pc/goods_pc_detail/goods_detail/p_6663126be4b0694c6ed35334\\" target=\\"_blank\\">L3 CSP-J\u7B97\u6CD5\u4E0E\u6570\u636E\u7ED3\u6784\uFF08\u5347\u7EA7\u7248\uFF09</a>\\r\\n\\r\\n<a href=\\"https://appnheqdvw18818.h5.xiaoeknow.com/p/course/column/p_66333810e4b0694c62c0563c\\" target=\\"_blank\\">CSP\u521D\u8D5B\u9AD8\u5206\u664B\u7EA7\u5305</a>\\r\\n\\r\\n---\\r\\n\\r\\n\x3C!-- <a href=\\"https://ovp.h5.xeknow.com/s/YrhIH\\" target=\\"_blank\\">CSP-J\u521D\u8D5B\u771F\u9898\u5206\u7C7B\u89E3\u6790</a> -->\\r\\n\\r\\n# [1. \u8F6F\u4EF6\u5B89\u88C5\u6559\u7A0B](https://kedaoi.cn/blog/2/62996a560c458b5395443b93)\\r\\n\\r\\n\x3C!--(/app.html)-->\\r\\n\\r\\n# 2. \u5E38\u7528\u8F6F\u4EF6\u4E0B\u8F7D\\r\\n\\r\\n- <a href=\\"http://www.google.cn/chrome?standalone=1&platform=win64\\" target=\\"_blank\\">\u8C37\u6B4C\u6D4F\u89C8\u5668(\u5F3A\u70C8\u63A8\u8350\u4F7F\u7528\u8C37\u6B4C\u6D4F\u89C8\u5668)</a>\\r\\n- <a href=\\"https://weixin.qq.com/\\" target=\\"_blank\\">\u5FAE\u4FE1 \u7535\u8111\u7248</a>\\r\\n- <a href=\\"/blog/2/6489b2c005bbdef3085fdad5\\" target=\\"_blank\\">Typora</a>\\r\\n\\r\\n\x3C!--\\r\\n\\r\\n## [\u952E\u76D8\u9F20\u6807\u63A8\u8350](https://kedaoi.cn/discuss/62bbd999e60fbe6529f36e1b)\\r\\n\\r\\n-->\\r\\n\\r\\n","roles":{"root":"-1","teacher":"10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831654836843204374400333813","guest":"10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831653804978457923079372801","default":"10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831653847145773401649578625","\u8001\u5E08":"10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831653923729372724703524853","\u7981\u8A00":"10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831653842534087366042190465","mod":"10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831653921223953154568872661","\u5B66\u751F":"10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831653847145773401653838465","\u5916\u90E8\u5B66\u751F":"10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831653847145773401649578625"},"avatar":"url:https://q1.qlogo.cn/g?b=qq&nk=491237847&s=160","langs":"c,cc.std98,cc.std11,cc.std17,codeforces.50,codeforces.54,py3,cc.std14,cc,codeforces","share":"*"},"extraTitleContent":"\u738B\u715C\u5586","SWConfig":{"preload":"","hosts":["http://kedaoi.cn","https://kedaoi.cn","https://kedaoi.cn","/"],"assets":[],"domains":[]}}'; var UserContext = '{"_id":9760,"mail":"6362706@qq.com","uname":"\u7A0B\u5B50\u7693","hashType":"hydro","priv":65540,"regat":"2024-05-01T05:16:04.176Z","loginat":"2024-08-02T04:01:46.021Z","perm":"BigInt::10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831653842534087366042190465","role":"\u7981\u8A00","scope":"BigInt::-1","tfa":false,"authn":false,"group":["9760"],"domains":[],"viewLang":"zh","timeZone":"Asia/Shanghai","codeLang":"cc.std14","codeTemplate":"#include<bits/stdc++.h>\\r\\nusing namespace std;\\r\\nint main(){\\r\\n \\r\\n return 0;\\r\\n}","avatar":"gravatar:6362706@qq.com","qq":"","gender":"0","bio":"```\\r\\n\\"AC=Answer Coarse=\u7C97\u52A3\u7684\u7B54\u6848\\"\\r\\n\\"WA=Wonderful Answer=\u597D\u7B54\u6848\\"\\r\\n\\"TLE=Time Limit Enough=\u65F6\u95F4\u5145\u88D5\\"\\r\\n\\"MLE=Memory Limit Enough=\u5185\u5B58\u5145\u88D5\\"\\r\\n\\"CE=Compile Easily=\u8F7B\u677E\u901A\u8FC7\u7F16\u8BD1\\"\\r\\n\\"RE=Run Excellently=\u5B8C\u7F8E\u8FD0\u884C\\"\\r\\n\\"UKE=Unbelievably Keep Enough Score=\u96BE\u4EE5\u7F6E\u4FE1\u5730\u4FDD\u6301\u8DB3\u591F\u7684\u5206\u6570\\"\\r\\n```\\r\\n\\r\\nAC\u53EA\u80FD\u5F97\u4F4E\u5206\uFF01\\r\\n\\r\\n\u5343\u4E07\u522BAC\\r\\n\\r\\n\u6240\u4EE5\uFF1A\\r\\n\\r\\nfile:///C:/Users/86177/Downloads/yu5SdbBaPDTiiWo9gEjR1%20(5).png\\r\\n\\r\\n\u628A\u5982\u4E0A\u6587\u4EF6\u5168\u9009\u540E\u62D6\u52A8\u653E\u8FDB\u6700\u4E0A\u9762\u53EF\u4EE5\u653E\u5165\u7684\u5730\u65B9\u6309\u4E00\u4E0Benter\u6709\u795D\u798F\u54E6\uFF01\\r\\n\\r\\n\u731C\u731C\u56FE\u7247\u5728\u90A3\u4E2A\u9898\\r\\nhttps://kedaoi.cn/p/1041/file/xigViBgJSApza_8nB2klp.png\\r\\n\u8FDB\u53BB\u8BD5\u8BD5 \u4F60\u80FD\u51E0\u547D\u8FC7\u5173\\r\\nhttps://poki.com/zh/g/level-devil\\r\\n\\r\\n0 Time Exceeded P0001 A+B Problem \u7A0B\u5B50\u7693 \u22656586ms \u2265392 KiB C++14 2 \u5206\u949F\u524D\\r\\n\\r\\n\u6218\u7EE9\u53EF\u67E5\uFF01\uFF01\uFF01\uFF01\\r\\n\\r\\n\u4EE3\u7801\u5982\u4E0B\\r\\n\\r\\n```\\r\\n#include<iostream>\\r\\n#include<cstring>\\r\\n#include<cstdio>\\r\\n#include<cstring>\\r\\nusing namespace std;\\r\\nstruct node \\r\\n{\\r\\n long long data,rev,sum, pig = 101;\\r\\n node *son[2],*pre;\\r\\n bool judge();\\r\\n bool isroot();\\r\\n void pushdown();\\r\\n void update();\\r\\n void setson(node *child,int lr);\\r\\n}lct[233];\\r\\nint top,a,b;\\r\\nnode *getnew(int x)\\r\\n{\\r\\n node *now=lct+ ++top;\\r\\n now->data=x;\\r\\n now->pre=now->son[1]=now->son[0]=lct;\\r\\n now->sum=0;\\r\\n now->rev=0;\\r\\n return now;\\r\\n}\\r\\nbool node::judge(){return pre->son[1]==this;}\\r\\nbool node::isroot()\\r\\n{\\r\\n if(pre==lct)return true;\\r\\n return !(pre->son[1]==this||pre->son[0]==this);\\r\\n}\\r\\nvoid node::pushdown()\\r\\n{\\r\\n if(this==lct||!rev)return;\\r\\n swap(son[0],son[1]);\\r\\n son[0]->rev^=1;\\r\\n son[1]->rev^=1;\\r\\n rev=0;\\r\\n}\\r\\nvoid node::update(){sum=son[1]->sum+son[0]->sum+data;}\\r\\nvoid node::setson(node *child,int lr)\\r\\n{\\r\\n this->pushdown();\\r\\n child->pre=this;\\r\\n son[lr]=child;\\r\\n this->update();\\r\\n}\\r\\nvoid rotate(node *now)\\r\\n{\\r\\n node *father=now->pre,*grandfa=father->pre;\\r\\n if(!father->isroot()) grandfa->pushdown();\\r\\n father->pushdown();now->pushdown();\\r\\n int lr=now->judge();\\r\\n father->setson(now->son[lr^1],lr);\\r\\n if(father->isroot()) now->pre=grandfa;\\r\\n else grandfa->setson(now,father->judge());\\r\\n now->setson(father,lr^1);\\r\\n father->update();now->update();\\r\\n if(grandfa!=lct) grandfa->update();\\r\\n}\\r\\nvoid splay(node *now)\\r\\n{\\r\\n if(now->isroot())return;\\r\\n for(;!now->isroot();rotate(now))\\r\\n if(!now->pre->isroot())\\r\\n now->judge()==now->pre->judge()?rotate(now->pre):rotate(now);\\r\\n}\\r\\nnode *access(node *now)\\r\\n{\\r\\n node *last=lct;\\r\\n for(;now!=lct;last=now,now=now->pre)\\r\\n {\\r\\n splay(now);\\r\\n now->setson(last,1);\\r\\n }\\r\\n return last;\\r\\n}\\r\\nvoid changeroot(node *now)\\r\\n{\\r\\n access(now)->rev^=1;\\r\\n splay(now);\\r\\n}\\r\\nvoid connect(node *x,node *y)\\r\\n{\\r\\n changeroot(x);\\r\\n x->pre=y;\\r\\n access(x);\\r\\n}\\r\\nvoid cut(node *x,node *y)\\r\\n{\\r\\n changeroot(x);\\r\\n access(y);\\r\\n splay(x);\\r\\n x->pushdown();\\r\\n x->son[1]=y->pre=lct;\\r\\n x->update();\\r\\n}\\r\\nint query(node *x,node *y)\\r\\n{\\r\\n changeroot(x);\\r\\n node *now=access(y);\\r\\n return now->sum;\\r\\n}\\r\\nint main()\\r\\n{\\r\\n scanf(\\"%d%d\\",&a,&b);\\r\\n node *A=getnew(a);\\r\\n node *B=getnew(b);\\r\\n connect(A,B);\\r\\n cut(A,B);\\r\\n connect(A,B);\\r\\n for(int i = 1; i <= 1000000000001; i++){\\r\\n \\ti -= 1;\\r\\n\\t}\\r\\n printf(\\"%d\\\\n\\",query(A,B)); \\r\\n return 0;\\r\\n}\\r\\n```\\r\\n0 Runtime Error\\r\\nP1763 \u81EA\u5DF1\u5B9E\u73B0\u51FD\u6570\u2014min()\\t\u7A0B\u5B50\u7693\\t10ms\\t416 KiB\\tC++ 14\\t3 \u5206\u949F\u524D\\r\\n\u6211\u662F\u7B2C\u4E00\u4E2ARE\u7684\uFF01\\r\\n\u4EE3\u7801\u5982\u4E0B:\\r\\n```\\r\\n#include<bits/stdc++.h>\\r\\nusing namespace std;\\r\\nint main(){\\r\\n\\tint n = 1;\\r\\n\\tint s = 1/0;\\r\\n\\tcout << s;\\r\\n\\treturn 0;\\t\\r\\n}\\r\\n```\\r\\n\u6709\u8C01\u77E5\u9053\u4E3A\u4EC0\u4E48\u7F16\u8BD1\u4F1A\u51FA\u73B0\u8FD9\u4E2A\u554A\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\uFF1F\\r\\n\\r\\n```\\r\\n// Core algorithmic facilities -*- C++ -*-\\r\\n\\r\\n// Copyright (C) 2001-2014 Free Software Foundation, Inc.\\r\\n//\\r\\n// This file is part of the GNU ISO C++ Library. This library is free\\r\\n// software; you can redistribute it and/or modify it under the\\r\\n// terms of the GNU General Public License as published by the\\r\\n// Free Software Foundation; either version 3, or (at your option)\\r\\n// any later version.\\r\\n\\r\\n// This library is distributed in the hope that it will be useful,\\r\\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\\r\\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\r\\n// GNU General Public License for more details.\\r\\n\\r\\n// Under Section 7 of GPL version 3, you are granted additional\\r\\n// permissions described in the GCC Runtime Library Exception, version\\r\\n// 3.1, as published by the Free Software Foundation.\\r\\n\\r\\n// You should have received a copy of the GNU General Public License and\\r\\n// a copy of the GCC Runtime Library Exception along with this program;\\r\\n// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see\\r\\n// <http://www.gnu.org/licenses/>.\\r\\n\\r\\n/*\\r\\n *\\r\\n * Copyright (c) 1994\\r\\n * Hewlett-Packard Company\\r\\n *\\r\\n * Permission to use, copy, modify, distribute and sell this software\\r\\n * and its documentation for any purpose is hereby granted without fee,\\r\\n * provided that the above copyright notice appear in all copies and\\r\\n * that both that copyright notice and this permission notice appear\\r\\n * in supporting documentation. Hewlett-Packard Company makes no\\r\\n * representations about the suitability of this software for any\\r\\n * purpose. It is provided \\"as is\\" without express or implied warranty.\\r\\n *\\r\\n *\\r\\n * Copyright (c) 1996-1998\\r\\n * Silicon Graphics Computer Systems, Inc.\\r\\n *\\r\\n * Permission to use, copy, modify, distribute and sell this software\\r\\n * and its documentation for any purpose is hereby granted without fee,\\r\\n * provided that the above copyright notice appear in all copies and\\r\\n * that both that copyright notice and this permission notice appear\\r\\n * in supporting documentation. Silicon Graphics makes no\\r\\n * representations about the suitability of this software for any\\r\\n * purpose. It is provided \\"as is\\" without express or implied warranty.\\r\\n */\\r\\n\\r\\n/** @file bits/stl_algobase.h\\r\\n * This is an internal header file, included by other library headers.\\r\\n * Do not attempt to use it directly. @headername{algorithm}\\r\\n */\\r\\n\\r\\n#ifndef _STL_ALGOBASE_H\\r\\n#define _STL_ALGOBASE_H 1\\r\\n\\r\\n#include <bits/c++config.h>\\r\\n#include <bits/functexcept.h>\\r\\n#include <bits/cpp_type_traits.h>\\r\\n#include <ext/type_traits.h>\\r\\n#include <ext/numeric_traits.h>\\r\\n#include <bits/stl_pair.h>\\r\\n#include <bits/stl_iterator_base_types.h>\\r\\n#include <bits/stl_iterator_base_funcs.h>\\r\\n#include <bits/stl_iterator.h>\\r\\n#include <bits/concept_check.h>\\r\\n#include <debug/debug.h>\\r\\n#include <bits/move.h> // For std::swap and _GLIBCXX_MOVE\\r\\n#include <bits/predefined_ops.h>\\r\\n\\r\\nnamespace std _GLIBCXX_VISIBILITY(default)\\r\\n{\\r\\n_GLIBCXX_BEGIN_NAMESPACE_VERSION\\r\\n\\r\\n#if __cplusplus < 201103L\\r\\n // See http://gcc.gnu.org/ml/libstdc++/2004-08/msg00167.html: in a\\r\\n // nutshell, we are partially implementing the resolution of DR 187,\\r\\n // when it\'s safe, i.e., the value_types are equal.\\r\\n template<bool _BoolType>\\r\\n struct __iter_swap\\r\\n {\\r\\n template<typename _ForwardIterator1, typename _ForwardIterator2>\\r\\n static void\\r\\n iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)\\r\\n {\\r\\n typedef typename iterator_traits<_ForwardIterator1>::value_type\\r\\n _ValueType1;\\r\\n _ValueType1 __tmp = _GLIBCXX_MOVE(*__a);\\r\\n *__a = _GLIBCXX_MOVE(*__b);\\r\\n *__b = _GLIBCXX_MOVE(__tmp);\\r\\n\\t}\\r\\n };\\r\\n\\r\\n template<>\\r\\n struct __iter_swap<true>\\r\\n {\\r\\n template<typename _ForwardIterator1, typename _ForwardIterator2>\\r\\n static void \\r\\n iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)\\r\\n {\\r\\n swap(*__a, *__b);\\r\\n }\\r\\n };\\r\\n#endif\\r\\n\\r\\n /**\\r\\n * @brief Swaps the contents of two iterators.\\r\\n * @ingroup mutating_algorithms\\r\\n * @param __a An iterator.\\r\\n * @param __b Another iterator.\\r\\n * @return Nothing.\\r\\n *\\r\\n * This function swaps the values pointed to by two iterators, not the\\r\\n * iterators themselves.\\r\\n */\\r\\n template<typename _ForwardIterator1, typename _ForwardIterator2>\\r\\n inline void\\r\\n iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<\\r\\n\\t\\t\\t\\t _ForwardIterator1>)\\r\\n __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<\\r\\n\\t\\t\\t\\t _ForwardIterator2>)\\r\\n\\r\\n#if __cplusplus < 201103L\\r\\n typedef typename iterator_traits<_ForwardIterator1>::value_type\\r\\n\\t_ValueType1;\\r\\n typedef typename iterator_traits<_ForwardIterator2>::value_type\\r\\n\\t_ValueType2;\\r\\n\\r\\n __glibcxx_function_requires(_ConvertibleConcept<_ValueType1,\\r\\n\\t\\t\\t\\t _ValueType2>)\\r\\n __glibcxx_function_requires(_ConvertibleConcept<_ValueType2,\\r\\n\\t\\t\\t\\t _ValueType1>)\\r\\n\\r\\n typedef typename iterator_traits<_ForwardIterator1>::reference\\r\\n\\t_ReferenceType1;\\r\\n typedef typename iterator_traits<_ForwardIterator2>::reference\\r\\n\\t_ReferenceType2;\\r\\n std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value\\r\\n\\t&& __are_same<_ValueType1&, _ReferenceType1>::__value\\r\\n\\t&& __are_same<_ValueType2&, _ReferenceType2>::__value>::\\r\\n\\titer_swap(__a, __b);\\r\\n#else\\r\\n swap(*__a, *__b);\\r\\n#endif\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief Swap the elements of two sequences.\\r\\n * @ingroup mutating_algorithms\\r\\n * @param __first1 A forward iterator.\\r\\n * @param __last1 A forward iterator.\\r\\n * @param __first2 A forward iterator.\\r\\n * @return An iterator equal to @p first2+(last1-first1).\\r\\n *\\r\\n * Swaps each element in the range @p [first1,last1) with the\\r\\n * corresponding element in the range @p [first2,(last1-first1)).\\r\\n * The ranges must not overlap.\\r\\n */\\r\\n template<typename _ForwardIterator1, typename _ForwardIterator2>\\r\\n _ForwardIterator2\\r\\n swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1,\\r\\n\\t\\t_ForwardIterator2 __first2)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<\\r\\n\\t\\t\\t\\t _ForwardIterator1>)\\r\\n __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<\\r\\n\\t\\t\\t\\t _ForwardIterator2>)\\r\\n __glibcxx_requires_valid_range(__first1, __last1);\\r\\n\\r\\n for (; __first1 != __last1; ++__first1, ++__first2)\\r\\n\\tstd::iter_swap(__first1, __first2);\\r\\n return __first2;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief This does what you think it does.\\r\\n * @ingroup sorting_algorithms\\r\\n * @param __a A thing of arbitrary type.\\r\\n * @param __b Another thing of arbitrary type.\\r\\n * @return The lesser of the parameters.\\r\\n *\\r\\n * This is the simple classic generic implementation. It will work on\\r\\n * temporary expressions, since they are only evaluated once, unlike a\\r\\n * preprocessor macro.\\r\\n */\\r\\n template<typename _Tp>\\r\\n inline const _Tp&\\r\\n min(const _Tp& __a, const _Tp& __b)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_LessThanComparableConcept<_Tp>)\\r\\n //return __b < __a ? __b : __a;\\r\\n if (__b < __a)\\r\\n\\treturn __b;\\r\\n return __a;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief This does what you think it does.\\r\\n * @ingroup sorting_algorithms\\r\\n * @param __a A thing of arbitrary type.\\r\\n * @param __b Another thing of arbitrary type.\\r\\n * @return The greater of the parameters.\\r\\n *\\r\\n * This is the simple classic generic implementation. It will work on\\r\\n * temporary expressions, since they are only evaluated once, unlike a\\r\\n * preprocessor macro.\\r\\n */\\r\\n template<typename _Tp>\\r\\n inline const _Tp&\\r\\n max(const _Tp& __a, const _Tp& __b)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_LessThanComparableConcept<_Tp>)\\r\\n //return __a < __b ? __b : __a;\\r\\n if (__a < __b)\\r\\n\\treturn __b;\\r\\n return __a;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief This does what you think it does.\\r\\n * @ingroup sorting_algorithms\\r\\n * @param __a A thing of arbitrary type.\\r\\n * @param __b Another thing of arbitrary type.\\r\\n * @param __comp A @link comparison_functors comparison functor@endlink.\\r\\n * @return The lesser of the parameters.\\r\\n *\\r\\n * This will work on temporary expressions, since they are only evaluated\\r\\n * once, unlike a preprocessor macro.\\r\\n */\\r\\n template<typename _Tp, typename _Compare>\\r\\n inline const _Tp&\\r\\n min(const _Tp& __a, const _Tp& __b, _Compare __comp)\\r\\n {\\r\\n //return __comp(__b, __a) ? __b : __a;\\r\\n if (__comp(__b, __a))\\r\\n\\treturn __b;\\r\\n return __a;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief This does what you think it does.\\r\\n * @ingroup sorting_algorithms\\r\\n * @param __a A thing of arbitrary type.\\r\\n * @param __b Another thing of arbitrary type.\\r\\n * @param __comp A @link comparison_functors comparison functor@endlink.\\r\\n * @return The greater of the parameters.\\r\\n *\\r\\n * This will work on temporary expressions, since they are only evaluated\\r\\n * once, unlike a preprocessor macro.\\r\\n */\\r\\n template<typename _Tp, typename _Compare>\\r\\n inline const _Tp&\\r\\n max(const _Tp& __a, const _Tp& __b, _Compare __comp)\\r\\n {\\r\\n //return __comp(__a, __b) ? __b : __a;\\r\\n if (__comp(__a, __b))\\r\\n\\treturn __b;\\r\\n return __a;\\r\\n }\\r\\n\\r\\n // If _Iterator is a __normal_iterator return its base (a plain pointer,\\r\\n // normally) otherwise return it untouched. See copy, fill, ... \\r\\n template<typename _Iterator>\\r\\n struct _Niter_base\\r\\n : _Iter_base<_Iterator, __is_normal_iterator<_Iterator>::__value>\\r\\n { };\\r\\n\\r\\n template<typename _Iterator>\\r\\n inline typename _Niter_base<_Iterator>::iterator_type\\r\\n __niter_base(_Iterator __it)\\r\\n { return std::_Niter_base<_Iterator>::_S_base(__it); }\\r\\n\\r\\n // Likewise, for move_iterator.\\r\\n template<typename _Iterator>\\r\\n struct _Miter_base\\r\\n : _Iter_base<_Iterator, __is_move_iterator<_Iterator>::__value>\\r\\n { };\\r\\n\\r\\n template<typename _Iterator>\\r\\n inline typename _Miter_base<_Iterator>::iterator_type\\r\\n __miter_base(_Iterator __it)\\r\\n { return std::_Miter_base<_Iterator>::_S_base(__it); }\\r\\n\\r\\n // All of these auxiliary structs serve two purposes. (1) Replace\\r\\n // calls to copy with memmove whenever possible. (Memmove, not memcpy,\\r\\n // because the input and output ranges are permitted to overlap.)\\r\\n // (2) If we\'re using random access iterators, then write the loop as\\r\\n // a for loop with an explicit count.\\r\\n\\r\\n template<bool, bool, typename>\\r\\n struct __copy_move\\r\\n {\\r\\n template<typename _II, typename _OI>\\r\\n static _OI\\r\\n __copy_m(_II __first, _II __last, _OI __result)\\r\\n {\\r\\n\\t for (; __first != __last; ++__result, ++__first)\\r\\n\\t *__result = *__first;\\r\\n\\t return __result;\\r\\n\\t}\\r\\n };\\r\\n\\r\\n#if __cplusplus >= 201103L\\r\\n template<typename _Category>\\r\\n struct __copy_move<true, false, _Category>\\r\\n {\\r\\n template<typename _II, typename _OI>\\r\\n static _OI\\r\\n __copy_m(_II __first, _II __last, _OI __result)\\r\\n {\\r\\n\\t for (; __first != __last; ++__result, ++__first)\\r\\n\\t *__result = std::move(*__first);\\r\\n\\t return __result;\\r\\n\\t}\\r\\n };\\r\\n#endif\\r\\n\\r\\n template<>\\r\\n struct __copy_move<false, false, random_access_iterator_tag>\\r\\n {\\r\\n template<typename _II, typename _OI>\\r\\n static _OI\\r\\n __copy_m(_II __first, _II __last, _OI __result)\\r\\n { \\r\\n\\t typedef typename iterator_traits<_II>::difference_type _Distance;\\r\\n\\t for(_Distance __n = __last - __first; __n > 0; --__n)\\r\\n\\t {\\r\\n\\t *__result = *__first;\\r\\n\\t ++__first;\\r\\n\\t ++__result;\\r\\n\\t }\\r\\n\\t return __result;\\r\\n\\t}\\r\\n };\\r\\n\\r\\n#if __cplusplus >= 201103L\\r\\n template<>\\r\\n struct __copy_move<true, false, random_access_iterator_tag>\\r\\n {\\r\\n template<typename _II, typename _OI>\\r\\n static _OI\\r\\n __copy_m(_II __first, _II __last, _OI __result)\\r\\n { \\r\\n\\t typedef typename iterator_traits<_II>::difference_type _Distance;\\r\\n\\t for(_Distance __n = __last - __first; __n > 0; --__n)\\r\\n\\t {\\r\\n\\t *__result = std::move(*__first);\\r\\n\\t ++__first;\\r\\n\\t ++__result;\\r\\n\\t }\\r\\n\\t return __result;\\r\\n\\t}\\r\\n };\\r\\n#endif\\r\\n\\r\\n template<bool _IsMove>\\r\\n struct __copy_move<_IsMove, true, random_access_iterator_tag>\\r\\n {\\r\\n template<typename _Tp>\\r\\n static _Tp*\\r\\n __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result)\\r\\n {\\r\\n#if __cplusplus >= 201103L\\r\\n\\t // trivial types can have deleted assignment\\r\\n\\t static_assert( is_copy_assignable<_Tp>::value,\\r\\n\\t \\"type is not assignable\\" );\\r\\n#endif\\r\\n\\t const ptrdiff_t _Num = __last - __first;\\r\\n\\t if (_Num)\\r\\n\\t __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);\\r\\n\\t return __result + _Num;\\r\\n\\t}\\r\\n };\\r\\n\\r\\n template<bool _IsMove, typename _II, typename _OI>\\r\\n inline _OI\\r\\n __copy_move_a(_II __first, _II __last, _OI __result)\\r\\n {\\r\\n typedef typename iterator_traits<_II>::value_type _ValueTypeI;\\r\\n typedef typename iterator_traits<_OI>::value_type _ValueTypeO;\\r\\n typedef typename iterator_traits<_II>::iterator_category _Category;\\r\\n const bool __simple = (__is_trivial(_ValueTypeI)\\r\\n\\t && __is_pointer<_II>::__value\\r\\n\\t && __is_pointer<_OI>::__value\\r\\n\\t\\t\\t && __are_same<_ValueTypeI, _ValueTypeO>::__value);\\r\\n\\r\\n return std::__copy_move<_IsMove, __simple,\\r\\n\\t _Category>::__copy_m(__first, __last, __result);\\r\\n }\\r\\n\\r\\n // Helpers for streambuf iterators (either istream or ostream).\\r\\n // NB: avoid including <iosfwd>, relatively large.\\r\\n template<typename _CharT>\\r\\n struct char_traits;\\r\\n\\r\\n template<typename _CharT, typename _Traits>\\r\\n class istreambuf_iterator;\\r\\n\\r\\n template<typename _CharT, typename _Traits>\\r\\n class ostreambuf_iterator;\\r\\n\\r\\n template<bool _IsMove, typename _CharT>\\r\\n typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, \\r\\n\\t ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type\\r\\n __copy_move_a2(_CharT*, _CharT*,\\r\\n\\t\\t ostreambuf_iterator<_CharT, char_traits<_CharT> >);\\r\\n\\r\\n template<bool _IsMove, typename _CharT>\\r\\n typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, \\r\\n\\t ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type\\r\\n __copy_move_a2(const _CharT*, const _CharT*,\\r\\n\\t\\t ostreambuf_iterator<_CharT, char_traits<_CharT> >);\\r\\n\\r\\n template<bool _IsMove, typename _CharT>\\r\\n typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,\\r\\n\\t\\t\\t\\t _CharT*>::__type\\r\\n __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >,\\r\\n\\t\\t istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*);\\r\\n\\r\\n template<bool _IsMove, typename _II, typename _OI>\\r\\n inline _OI\\r\\n __copy_move_a2(_II __first, _II __last, _OI __result)\\r\\n {\\r\\n return _OI(std::__copy_move_a<_IsMove>(std::__niter_base(__first),\\r\\n\\t\\t\\t\\t\\t std::__niter_base(__last),\\r\\n\\t\\t\\t\\t\\t std::__niter_base(__result)));\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief Copies the range [first,last) into result.\\r\\n * @ingroup mutating_algorithms\\r\\n * @param __first An input iterator.\\r\\n * @param __last An input iterator.\\r\\n * @param __result An output iterator.\\r\\n * @return result + (first - last)\\r\\n *\\r\\n * This inline function will boil down to a call to @c memmove whenever\\r\\n * possible. Failing that, if random access iterators are passed, then the\\r\\n * loop count will be known (and therefore a candidate for compiler\\r\\n * optimizations such as unrolling). Result may not be contained within\\r\\n * [first,last); the copy_backward function should be used instead.\\r\\n *\\r\\n * Note that the end of the output range is permitted to be contained\\r\\n * within [first,last).\\r\\n */\\r\\n template<typename _II, typename _OI>\\r\\n inline _OI\\r\\n copy(_II __first, _II __last, _OI __result)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_II>)\\r\\n __glibcxx_function_requires(_OutputIteratorConcept<_OI,\\r\\n\\t typename iterator_traits<_II>::value_type>)\\r\\n __glibcxx_requires_valid_range(__first, __last);\\r\\n\\r\\n return (std::__copy_move_a2<__is_move_iterator<_II>::__value>\\r\\n\\t (std::__miter_base(__first), std::__miter_base(__last),\\r\\n\\t __result));\\r\\n }\\r\\n\\r\\n#if __cplusplus >= 201103L\\r\\n /**\\r\\n * @brief Moves the range [first,last) into result.\\r\\n * @ingroup mutating_algorithms\\r\\n * @param __first An input iterator.\\r\\n * @param __last An input iterator.\\r\\n * @param __result An output iterator.\\r\\n * @return result + (first - last)\\r\\n *\\r\\n * This inline function will boil down to a call to @c memmove whenever\\r\\n * possible. Failing that, if random access iterators are passed, then the\\r\\n * loop count will be known (and therefore a candidate for compiler\\r\\n * optimizations such as unrolling). Result may not be contained within\\r\\n * [first,last); the move_backward function should be used instead.\\r\\n *\\r\\n * Note that the end of the output range is permitted to be contained\\r\\n * within [first,last).\\r\\n */\\r\\n template<typename _II, typename _OI>\\r\\n inline _OI\\r\\n move(_II __first, _II __last, _OI __result)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_II>)\\r\\n __glibcxx_function_requires(_OutputIteratorConcept<_OI,\\r\\n\\t typename iterator_traits<_II>::value_type>)\\r\\n __glibcxx_requires_valid_range(__first, __last);\\r\\n\\r\\n return std::__copy_move_a2<true>(std::__miter_base(__first),\\r\\n\\t\\t\\t\\t std::__miter_base(__last), __result);\\r\\n }\\r\\n\\r\\n#define _GLIBCXX_MOVE3(_Tp, _Up, _Vp) std::move(_Tp, _Up, _Vp)\\r\\n#else\\r\\n#define _GLIBCXX_MOVE3(_Tp, _Up, _Vp) std::copy(_Tp, _Up, _Vp)\\r\\n#endif\\r\\n\\r\\n template<bool, bool, typename>\\r\\n struct __copy_move_backward\\r\\n {\\r\\n template<typename _BI1, typename _BI2>\\r\\n static _BI2\\r\\n __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)\\r\\n {\\r\\n\\t while (__first != __last)\\r\\n\\t *--__result = *--__last;\\r\\n\\t return __result;\\r\\n\\t}\\r\\n };\\r\\n\\r\\n#if __cplusplus >= 201103L\\r\\n template<typename _Category>\\r\\n struct __copy_move_backward<true, false, _Category>\\r\\n {\\r\\n template<typename _BI1, typename _BI2>\\r\\n static _BI2\\r\\n __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)\\r\\n {\\r\\n\\t while (__first != __last)\\r\\n\\t *--__result = std::move(*--__last);\\r\\n\\t return __result;\\r\\n\\t}\\r\\n };\\r\\n#endif\\r\\n\\r\\n template<>\\r\\n struct __copy_move_backward<false, false, random_access_iterator_tag>\\r\\n {\\r\\n template<typename _BI1, typename _BI2>\\r\\n static _BI2\\r\\n __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)\\r\\n {\\r\\n\\t typename iterator_traits<_BI1>::difference_type __n;\\r\\n\\t for (__n = __last - __first; __n > 0; --__n)\\r\\n\\t *--__result = *--__last;\\r\\n\\t return __result;\\r\\n\\t}\\r\\n };\\r\\n\\r\\n#if __cplusplus >= 201103L\\r\\n template<>\\r\\n struct __copy_move_backward<true, false, random_access_iterator_tag>\\r\\n {\\r\\n template<typename _BI1, typename _BI2>\\r\\n static _BI2\\r\\n __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)\\r\\n {\\r\\n\\t typename iterator_traits<_BI1>::difference_type __n;\\r\\n\\t for (__n = __last - __first; __n > 0; --__n)\\r\\n\\t *--__result = std::move(*--__last);\\r\\n\\t return __result;\\r\\n\\t}\\r\\n };\\r\\n#endif\\r\\n\\r\\n template<bool _IsMove>\\r\\n struct __copy_move_backward<_IsMove, true, random_access_iterator_tag>\\r\\n {\\r\\n template<typename _Tp>\\r\\n static _Tp*\\r\\n __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result)\\r\\n {\\r\\n#if __cplusplus >= 201103L\\r\\n\\t // trivial types can have deleted assignment\\r\\n\\t static_assert( is_copy_assignable<_Tp>::value,\\r\\n\\t \\"type is not assignable\\" );\\r\\n#endif\\r\\n\\t const ptrdiff_t _Num = __last - __first;\\r\\n\\t if (_Num)\\r\\n\\t __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num);\\r\\n\\t return __result - _Num;\\r\\n\\t}\\r\\n };\\r\\n\\r\\n template<bool _IsMove, typename _BI1, typename _BI2>\\r\\n inline _BI2\\r\\n __copy_move_backward_a(_BI1 __first, _BI1 __last, _BI2 __result)\\r\\n {\\r\\n typedef typename iterator_traits<_BI1>::value_type _ValueType1;\\r\\n typedef typename iterator_traits<_BI2>::value_type _ValueType2;\\r\\n typedef typename iterator_traits<_BI1>::iterator_category _Category;\\r\\n const bool __simple = (__is_trivial(_ValueType1)\\r\\n\\t && __is_pointer<_BI1>::__value\\r\\n\\t && __is_pointer<_BI2>::__value\\r\\n\\t\\t\\t && __are_same<_ValueType1, _ValueType2>::__value);\\r\\n\\r\\n return std::__copy_move_backward<_IsMove, __simple,\\r\\n\\t _Category>::__copy_move_b(__first,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t __last,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t __result);\\r\\n }\\r\\n\\r\\n template<bool _IsMove, typename _BI1, typename _BI2>\\r\\n inline _BI2\\r\\n __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result)\\r\\n {\\r\\n return _BI2(std::__copy_move_backward_a<_IsMove>\\r\\n\\t\\t (std::__niter_base(__first), std::__niter_base(__last),\\r\\n\\t\\t std::__niter_base(__result)));\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief Copies the range [first,last) into result.\\r\\n * @ingroup mutating_algorithms\\r\\n * @param __first A bidirectional iterator.\\r\\n * @param __last A bidirectional iterator.\\r\\n * @param __result A bidirectional iterator.\\r\\n * @return result - (first - last)\\r\\n *\\r\\n * The function has the same effect as copy, but starts at the end of the\\r\\n * range and works its way to the start, returning the start of the result.\\r\\n * This inline function will boil down to a call to @c memmove whenever\\r\\n * possible. Failing that, if random access iterators are passed, then the\\r\\n * loop count will be known (and therefore a candidate for compiler\\r\\n * optimizations such as unrolling).\\r\\n *\\r\\n * Result may not be in the range (first,last]. Use copy instead. Note\\r\\n * that the start of the output range may overlap [first,last).\\r\\n */\\r\\n template<typename _BI1, typename _BI2>\\r\\n inline _BI2\\r\\n copy_backward(_BI1 __first, _BI1 __last, _BI2 __result)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_BidirectionalIteratorConcept<_BI1>)\\r\\n __glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept<_BI2>)\\r\\n __glibcxx_function_requires(_ConvertibleConcept<\\r\\n\\t typename iterator_traits<_BI1>::value_type,\\r\\n\\t typename iterator_traits<_BI2>::value_type>)\\r\\n __glibcxx_requires_valid_range(__first, __last);\\r\\n\\r\\n return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value>\\r\\n\\t (std::__miter_base(__first), std::__miter_base(__last),\\r\\n\\t __result));\\r\\n }\\r\\n\\r\\n#if __cplusplus >= 201103L\\r\\n /**\\r\\n * @brief Moves the range [first,last) into result.\\r\\n * @ingroup mutating_algorithms\\r\\n * @param __first A bidirectional iterator.\\r\\n * @param __last A bidirectional iterator.\\r\\n * @param __result A bidirectional iterator.\\r\\n * @return result - (first - last)\\r\\n *\\r\\n * The function has the same effect as move, but starts at the end of the\\r\\n * range and works its way to the start, returning the start of the result.\\r\\n * This inline function will boil down to a call to @c memmove whenever\\r\\n * possible. Failing that, if random access iterators are passed, then the\\r\\n * loop count will be known (and therefore a candidate for compiler\\r\\n * optimizations such as unrolling).\\r\\n *\\r\\n * Result may not be in the range (first,last]. Use move instead. Note\\r\\n * that the start of the output range may overlap [first,last).\\r\\n */\\r\\n template<typename _BI1, typename _BI2>\\r\\n inline _BI2\\r\\n move_backward(_BI1 __first, _BI1 __last, _BI2 __result)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_BidirectionalIteratorConcept<_BI1>)\\r\\n __glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept<_BI2>)\\r\\n __glibcxx_function_requires(_ConvertibleConcept<\\r\\n\\t typename iterator_traits<_BI1>::value_type,\\r\\n\\t typename iterator_traits<_BI2>::value_type>)\\r\\n __glibcxx_requires_valid_range(__first, __last);\\r\\n\\r\\n return std::__copy_move_backward_a2<true>(std::__miter_base(__first),\\r\\n\\t\\t\\t\\t\\t\\tstd::__miter_base(__last),\\r\\n\\t\\t\\t\\t\\t\\t__result);\\r\\n }\\r\\n\\r\\n#define _GLIBCXX_MOVE_BACKWARD3(_Tp, _Up, _Vp) std::move_backward(_Tp, _Up, _Vp)\\r\\n#else\\r\\n#define _GLIBCXX_MOVE_BACKWARD3(_Tp, _Up, _Vp) std::copy_backward(_Tp, _Up, _Vp)\\r\\n#endif\\r\\n\\r\\n template<typename _ForwardIterator, typename _Tp>\\r\\n inline typename\\r\\n __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, void>::__type\\r\\n __fill_a(_ForwardIterator __first, _ForwardIterator __last,\\r\\n \\t const _Tp& __value)\\r\\n {\\r\\n for (; __first != __last; ++__first)\\r\\n\\t*__first = __value;\\r\\n }\\r\\n \\r\\n template<typename _ForwardIterator, typename _Tp>\\r\\n inline typename\\r\\n __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type\\r\\n __fill_a(_ForwardIterator __first, _ForwardIterator __last,\\r\\n\\t const _Tp& __value)\\r\\n {\\r\\n const _Tp __tmp = __value;\\r\\n for (; __first != __last; ++__first)\\r\\n\\t*__first = __tmp;\\r\\n }\\r\\n\\r\\n // Specialization: for char types we can use memset.\\r\\n template<typename _Tp>\\r\\n inline typename\\r\\n __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type\\r\\n __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c)\\r\\n {\\r\\n const _Tp __tmp = __c;\\r\\n __builtin_memset(__first, static_cast<unsigned char>(__tmp),\\r\\n\\t\\t __last - __first);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief Fills the range [first,last) with copies of value.\\r\\n * @ingroup mutating_algorithms\\r\\n * @param __first A forward iterator.\\r\\n * @param __last A forward iterator.\\r\\n * @param __value A reference-to-const of arbitrary type.\\r\\n * @return Nothing.\\r\\n *\\r\\n * This function fills a range with copies of the same value. For char\\r\\n * types filling contiguous areas of memory, this becomes an inline call\\r\\n * to @c memset or @c wmemset.\\r\\n */\\r\\n template<typename _ForwardIterator, typename _Tp>\\r\\n inline void\\r\\n fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<\\r\\n\\t\\t\\t\\t _ForwardIterator>)\\r\\n __glibcxx_requires_valid_range(__first, __last);\\r\\n\\r\\n std::__fill_a(std::__niter_base(__first), std::__niter_base(__last),\\r\\n\\t\\t __value);\\r\\n }\\r\\n\\r\\n template<typename _OutputIterator, typename _Size, typename _Tp>\\r\\n inline typename\\r\\n __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, _OutputIterator>::__type\\r\\n __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)\\r\\n {\\r\\n for (__decltype(__n + 0) __niter = __n;\\r\\n\\t __niter > 0; --__niter, ++__first)\\r\\n\\t*__first = __value;\\r\\n return __first;\\r\\n }\\r\\n\\r\\n template<typename _OutputIterator, typename _Size, typename _Tp>\\r\\n inline typename\\r\\n __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type\\r\\n __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)\\r\\n {\\r\\n const _Tp __tmp = __value;\\r\\n for (__decltype(__n + 0) __niter = __n;\\r\\n\\t __niter > 0; --__niter, ++__first)\\r\\n\\t*__first = __tmp;\\r\\n return __first;\\r\\n }\\r\\n\\r\\n template<typename _Size, typename _Tp>\\r\\n inline typename\\r\\n __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, _Tp*>::__type\\r\\n __fill_n_a(_Tp* __first, _Size __n, const _Tp& __c)\\r\\n {\\r\\n std::__fill_a(__first, __first + __n, __c);\\r\\n return __first + __n;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief Fills the range [first,first+n) with copies of value.\\r\\n * @ingroup mutating_algorithms\\r\\n * @param __first An output iterator.\\r\\n * @param __n The count of copies to perform.\\r\\n * @param __value A reference-to-const of arbitrary type.\\r\\n * @return The iterator at first+n.\\r\\n *\\r\\n * This function fills a range with copies of the same value. For char\\r\\n * types filling contiguous areas of memory, this becomes an inline call\\r\\n * to @c memset or @ wmemset.\\r\\n *\\r\\n * _GLIBCXX_RESOLVE_LIB_DEFECTS\\r\\n * DR 865. More algorithms that throw away information\\r\\n */\\r\\n template<typename _OI, typename _Size, typename _Tp>\\r\\n inline _OI\\r\\n fill_n(_OI __first, _Size __n, const _Tp& __value)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_OutputIteratorConcept<_OI, _Tp>)\\r\\n\\r\\n return _OI(std::__fill_n_a(std::__niter_base(__first), __n, __value));\\r\\n }\\r\\n\\r\\n template<bool _BoolType>\\r\\n struct __equal\\r\\n {\\r\\n template<typename _II1, typename _II2>\\r\\n static bool\\r\\n equal(_II1 __first1, _II1 __last1, _II2 __first2)\\r\\n {\\r\\n\\t for (; __first1 != __last1; ++__first1, ++__first2)\\r\\n\\t if (!(*__first1 == *__first2))\\r\\n\\t return false;\\r\\n\\t return true;\\r\\n\\t}\\r\\n };\\r\\n\\r\\n template<>\\r\\n struct __equal<true>\\r\\n {\\r\\n template<typename _Tp>\\r\\n static bool\\r\\n equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2)\\r\\n {\\r\\n\\t return !__builtin_memcmp(__first1, __first2, sizeof(_Tp)\\r\\n\\t\\t\\t\\t * (__last1 - __first1));\\r\\n\\t}\\r\\n };\\r\\n\\r\\n template<typename _II1, typename _II2>\\r\\n inline bool\\r\\n __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2)\\r\\n {\\r\\n typedef typename iterator_traits<_II1>::value_type _ValueType1;\\r\\n typedef typename iterator_traits<_II2>::value_type _ValueType2;\\r\\n const bool __simple = ((__is_integer<_ValueType1>::__value\\r\\n\\t\\t\\t || __is_pointer<_ValueType1>::__value)\\r\\n\\t && __is_pointer<_II1>::__value\\r\\n\\t && __is_pointer<_II2>::__value\\r\\n\\t\\t\\t && __are_same<_ValueType1, _ValueType2>::__value);\\r\\n\\r\\n return std::__equal<__simple>::equal(__first1, __last1, __first2);\\r\\n }\\r\\n\\r\\n template<typename, typename>\\r\\n struct __lc_rai\\r\\n {\\r\\n template<typename _II1, typename _II2>\\r\\n static _II1\\r\\n __newlast1(_II1, _II1 __last1, _II2, _II2)\\r\\n { return __last1; }\\r\\n\\r\\n template<typename _II>\\r\\n static bool\\r\\n __cnd2(_II __first, _II __last)\\r\\n { return __first != __last; }\\r\\n };\\r\\n\\r\\n template<>\\r\\n struct __lc_rai<random_access_iterator_tag, random_access_iterator_tag>\\r\\n {\\r\\n template<typename _RAI1, typename _RAI2>\\r\\n static _RAI1\\r\\n __newlast1(_RAI1 __first1, _RAI1 __last1,\\r\\n\\t\\t _RAI2 __first2, _RAI2 __last2)\\r\\n {\\r\\n\\t const typename iterator_traits<_RAI1>::difference_type\\r\\n\\t __diff1 = __last1 - __first1;\\r\\n\\t const typename iterator_traits<_RAI2>::difference_type\\r\\n\\t __diff2 = __last2 - __first2;\\r\\n\\t return __diff2 < __diff1 ? __first1 + __diff2 : __last1;\\r\\n\\t}\\r\\n\\r\\n template<typename _RAI>\\r\\n static bool\\r\\n __cnd2(_RAI, _RAI)\\r\\n { return true; }\\r\\n };\\r\\n\\r\\n template<typename _II1, typename _II2, typename _Compare>\\r\\n bool\\r\\n __lexicographical_compare_impl(_II1 __first1, _II1 __last1,\\r\\n\\t\\t\\t\\t _II2 __first2, _II2 __last2,\\r\\n\\t\\t\\t\\t _Compare __comp)\\r\\n {\\r\\n typedef typename iterator_traits<_II1>::iterator_category _Category1;\\r\\n typedef typename iterator_traits<_II2>::iterator_category _Category2;\\r\\n typedef std::__lc_rai<_Category1, _Category2> __rai_type;\\r\\n\\r\\n __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2);\\r\\n for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);\\r\\n\\t ++__first1, ++__first2)\\r\\n\\t{\\r\\n\\t if (__comp(__first1, __first2))\\r\\n\\t return true;\\r\\n\\t if (__comp(__first2, __first1))\\r\\n\\t return false;\\r\\n\\t}\\r\\n return __first1 == __last1 && __first2 != __last2;\\r\\n }\\r\\n\\r\\n template<bool _BoolType>\\r\\n struct __lexicographical_compare\\r\\n {\\r\\n template<typename _II1, typename _II2>\\r\\n static bool __lc(_II1, _II1, _II2, _II2);\\r\\n };\\r\\n\\r\\n template<bool _BoolType>\\r\\n template<typename _II1, typename _II2>\\r\\n bool\\r\\n __lexicographical_compare<_BoolType>::\\r\\n __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)\\r\\n {\\r\\n\\treturn std::__lexicographical_compare_impl(__first1, __last1,\\r\\n\\t\\t\\t\\t\\t\\t __first2, __last2,\\r\\n\\t\\t\\t\\t\\t__gnu_cxx::__ops::__iter_less_iter());\\r\\n }\\r\\n\\r\\n template<>\\r\\n struct __lexicographical_compare<true>\\r\\n {\\r\\n template<typename _Tp, typename _Up>\\r\\n static bool\\r\\n __lc(const _Tp* __first1, const _Tp* __last1,\\r\\n\\t const _Up* __first2, const _Up* __last2)\\r\\n\\t{\\r\\n\\t const size_t __len1 = __last1 - __first1;\\r\\n\\t const size_t __len2 = __last2 - __first2;\\r\\n\\t const int __result = __builtin_memcmp(__first1, __first2,\\r\\n\\t\\t\\t\\t\\t\\tstd::min(__len1, __len2));\\r\\n\\t return __result != 0 ? __result < 0 : __len1 < __len2;\\r\\n\\t}\\r\\n };\\r\\n\\r\\n template<typename _II1, typename _II2>\\r\\n inline bool\\r\\n __lexicographical_compare_aux(_II1 __first1, _II1 __last1,\\r\\n\\t\\t\\t\\t _II2 __first2, _II2 __last2)\\r\\n {\\r\\n typedef typename iterator_traits<_II1>::value_type _ValueType1;\\r\\n typedef typename iterator_traits<_II2>::value_type _ValueType2;\\r\\n const bool __simple =\\r\\n\\t(__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value\\r\\n\\t && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed\\r\\n\\t && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed\\r\\n\\t && __is_pointer<_II1>::__value\\r\\n\\t && __is_pointer<_II2>::__value);\\r\\n\\r\\n return std::__lexicographical_compare<__simple>::__lc(__first1, __last1,\\r\\n\\t\\t\\t\\t\\t\\t\\t __first2, __last2);\\r\\n }\\r\\n\\r\\n template<typename _ForwardIterator, typename _Tp, typename _Compare>\\r\\n _ForwardIterator\\r\\n __lower_bound(_ForwardIterator __first, _ForwardIterator __last,\\r\\n\\t\\t const _Tp& __val, _Compare __comp)\\r\\n {\\r\\n typedef typename iterator_traits<_ForwardIterator>::difference_type\\r\\n\\t_DistanceType;\\r\\n\\r\\n _DistanceType __len = std::distance(__first, __last);\\r\\n\\r\\n while (__len > 0)\\r\\n\\t{\\r\\n\\t _DistanceType __half = __len >> 1;\\r\\n\\t _ForwardIterator __middle = __first;\\r\\n\\t std::advance(__middle, __half);\\r\\n\\t if (__comp(__middle, __val))\\r\\n\\t {\\r\\n\\t __first = __middle;\\r\\n\\t ++__first;\\r\\n\\t __len = __len - __half - 1;\\r\\n\\t }\\r\\n\\t else\\r\\n\\t __len = __half;\\r\\n\\t}\\r\\n return __first;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief Finds the first position in which @a val could be inserted\\r\\n * without changing the ordering.\\r\\n * @param __first An iterator.\\r\\n * @param __last Another iterator.\\r\\n * @param __val The search term.\\r\\n * @return An iterator pointing to the first element <em>not less\\r\\n * than</em> @a val, or end() if every element is less than \\r\\n * @a val.\\r\\n * @ingroup binary_search_algorithms\\r\\n */\\r\\n template<typename _ForwardIterator, typename _Tp>\\r\\n inline _ForwardIterator\\r\\n lower_bound(_ForwardIterator __first, _ForwardIterator __last,\\r\\n\\t\\tconst _Tp& __val)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)\\r\\n __glibcxx_function_requires(_LessThanOpConcept<\\r\\n\\t typename iterator_traits<_ForwardIterator>::value_type, _Tp>)\\r\\n __glibcxx_requires_partitioned_lower(__first, __last, __val);\\r\\n\\r\\n return std::__lower_bound(__first, __last, __val,\\r\\n\\t\\t\\t\\t__gnu_cxx::__ops::__iter_less_val());\\r\\n }\\r\\n\\r\\n /// This is a helper function for the sort routines and for random.tcc.\\r\\n // Precondition: __n > 0.\\r\\n inline _GLIBCXX_CONSTEXPR int\\r\\n __lg(int __n)\\r\\n { return sizeof(int) * __CHAR_BIT__ - 1 - __builtin_clz(__n); }\\r\\n\\r\\n inline _GLIBCXX_CONSTEXPR unsigned\\r\\n __lg(unsigned __n)\\r\\n { return sizeof(int) * __CHAR_BIT__ - 1 - __builtin_clz(__n); }\\r\\n\\r\\n inline _GLIBCXX_CONSTEXPR long\\r\\n __lg(long __n)\\r\\n { return sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); }\\r\\n\\r\\n inline _GLIBCXX_CONSTEXPR unsigned long\\r\\n __lg(unsigned long __n)\\r\\n { return sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); }\\r\\n\\r\\n inline _GLIBCXX_CONSTEXPR long long\\r\\n __lg(long long __n)\\r\\n { return sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); }\\r\\n\\r\\n inline _GLIBCXX_CONSTEXPR unsigned long long\\r\\n __lg(unsigned long long __n)\\r\\n { return sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); }\\r\\n\\r\\n_GLIBCXX_END_NAMESPACE_VERSION\\r\\n\\r\\n_GLIBCXX_BEGIN_NAMESPACE_ALGO\\r\\n\\r\\n /**\\r\\n * @brief Tests a range for element-wise equality.\\r\\n * @ingroup non_mutating_algorithms\\r\\n * @param __first1 An input iterator.\\r\\n * @param __last1 An input iterator.\\r\\n * @param __first2 An input iterator.\\r\\n * @return A boolean true or false.\\r\\n *\\r\\n * This compares the elements of two ranges using @c == and returns true or\\r\\n * false depending on whether all of the corresponding elements of the\\r\\n * ranges are equal.\\r\\n */\\r\\n template<typename _II1, typename _II2>\\r\\n inline bool\\r\\n equal(_II1 __first1, _II1 __last1, _II2 __first2)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_II1>)\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_II2>)\\r\\n __glibcxx_function_requires(_EqualOpConcept<\\r\\n\\t typename iterator_traits<_II1>::value_type,\\r\\n\\t typename iterator_traits<_II2>::value_type>)\\r\\n __glibcxx_requires_valid_range(__first1, __last1);\\r\\n\\r\\n return std::__equal_aux(std::__niter_base(__first1),\\r\\n\\t\\t\\t std::__niter_base(__last1),\\r\\n\\t\\t\\t std::__niter_base(__first2));\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief Tests a range for element-wise equality.\\r\\n * @ingroup non_mutating_algorithms\\r\\n * @param __first1 An input iterator.\\r\\n * @param __last1 An input iterator.\\r\\n * @param __first2 An input iterator.\\r\\n * @param __binary_pred A binary predicate @link functors\\r\\n * functor@endlink.\\r\\n * @return A boolean true or false.\\r\\n *\\r\\n * This compares the elements of two ranges using the binary_pred\\r\\n * parameter, and returns true or\\r\\n * false depending on whether all of the corresponding elements of the\\r\\n * ranges are equal.\\r\\n */\\r\\n template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>\\r\\n inline bool\\r\\n equal(_IIter1 __first1, _IIter1 __last1,\\r\\n\\t _IIter2 __first2, _BinaryPredicate __binary_pred)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_IIter1>)\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_IIter2>)\\r\\n __glibcxx_requires_valid_range(__first1, __last1);\\r\\n\\r\\n for (; __first1 != __last1; ++__first1, ++__first2)\\r\\n\\tif (!bool(__binary_pred(*__first1, *__first2)))\\r\\n\\t return false;\\r\\n return true;\\r\\n }\\r\\n\\r\\n#if __cplusplus > 201103L\\r\\n\\r\\n#define __cpp_lib_robust_nonmodifying_seq_ops 201304\\r\\n\\r\\n /**\\r\\n * @brief Tests a range for element-wise equality.\\r\\n * @ingroup non_mutating_algorithms\\r\\n * @param __first1 An input iterator.\\r\\n * @param __last1 An input iterator.\\r\\n * @param __first2 An input iterator.\\r\\n * @param __last2 An input iterator.\\r\\n * @return A boolean true or false.\\r\\n *\\r\\n * This compares the elements of two ranges using @c == and returns true or\\r\\n * false depending on whether all of the corresponding elements of the\\r\\n * ranges are equal.\\r\\n */\\r\\n template<typename _II1, typename _II2>\\r\\n inline bool\\r\\n equal(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_II1>)\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_II2>)\\r\\n __glibcxx_function_requires(_EqualOpConcept<\\r\\n\\t typename iterator_traits<_II1>::value_type,\\r\\n\\t typename iterator_traits<_II2>::value_type>)\\r\\n __glibcxx_requires_valid_range(__first1, __last1);\\r\\n __glibcxx_requires_valid_range(__first2, __last2);\\r\\n\\r\\n using _RATag = random_access_iterator_tag;\\r\\n using _Cat1 = typename iterator_traits<_II1>::iterator_category;\\r\\n using _Cat2 = typename iterator_traits<_II2>::iterator_category;\\r\\n using _RAIters = __and_<is_same<_Cat1, _RATag>, is_same<_Cat2, _RATag>>;\\r\\n if (_RAIters())\\r\\n\\t{\\r\\n\\t auto __d1 = std::distance(__first1, __last1);\\r\\n\\t auto __d2 = std::distance(__first2, __last2);\\r\\n\\t if (__d1 != __d2)\\r\\n\\t return false;\\r\\n\\t return _GLIBCXX_STD_A::equal(__first1, __last1, __first2);\\r\\n\\t}\\r\\n\\r\\n for (; __first1 != __last1 && __first2 != __last2; ++__first1, ++__first2)\\r\\n\\tif (!(*__first1 == *__first2))\\r\\n\\t return false;\\r\\n return __first1 == __last1 && __first2 == __last2;\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief Tests a range for element-wise equality.\\r\\n * @ingroup non_mutating_algorithms\\r\\n * @param __first1 An input iterator.\\r\\n * @param __last1 An input iterator.\\r\\n * @param __first2 An input iterator.\\r\\n * @param __last2 An input iterator.\\r\\n * @param __binary_pred A binary predicate @link functors\\r\\n * functor@endlink.\\r\\n * @return A boolean true or false.\\r\\n *\\r\\n * This compares the elements of two ranges using the binary_pred\\r\\n * parameter, and returns true or\\r\\n * false depending on whether all of the corresponding elements of the\\r\\n * ranges are equal.\\r\\n */\\r\\n template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>\\r\\n inline bool\\r\\n equal(_IIter1 __first1, _IIter1 __last1,\\r\\n\\t _IIter2 __first2, _IIter2 __last2, _BinaryPredicate __binary_pred)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_IIter1>)\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_IIter2>)\\r\\n __glibcxx_requires_valid_range(__first1, __last1);\\r\\n __glibcxx_requires_valid_range(__first2, __last2);\\r\\n\\r\\n using _RATag = random_access_iterator_tag;\\r\\n using _Cat1 = typename iterator_traits<_IIter1>::iterator_category;\\r\\n using _Cat2 = typename iterator_traits<_IIter2>::iterator_category;\\r\\n using _RAIters = __and_<is_same<_Cat1, _RATag>, is_same<_Cat2, _RATag>>;\\r\\n if (_RAIters())\\r\\n\\t{\\r\\n\\t auto __d1 = std::distance(__first1, __last1);\\r\\n\\t auto __d2 = std::distance(__first2, __last2);\\r\\n\\t if (__d1 != __d2)\\r\\n\\t return false;\\r\\n\\t return _GLIBCXX_STD_A::equal(__first1, __last1, __first2,\\r\\n\\t\\t\\t\\t __binary_pred);\\r\\n\\t}\\r\\n\\r\\n for (; __first1 != __last1 && __first2 != __last2; ++__first1, ++__first2)\\r\\n\\tif (!bool(__binary_pred(*__first1, *__first2)))\\r\\n\\t return false;\\r\\n return __first1 == __last1 && __first2 == __last2;\\r\\n }\\r\\n#endif\\r\\n\\r\\n /**\\r\\n * @brief Performs @b dictionary comparison on ranges.\\r\\n * @ingroup sorting_algorithms\\r\\n * @param __first1 An input iterator.\\r\\n * @param __last1 An input iterator.\\r\\n * @param __first2 An input iterator.\\r\\n * @param __last2 An input iterator.\\r\\n * @return A boolean true or false.\\r\\n *\\r\\n * <em>Returns true if the sequence of elements defined by the range\\r\\n * [first1,last1) is lexicographically less than the sequence of elements\\r\\n * defined by the range [first2,last2). Returns false otherwise.</em>\\r\\n * (Quoted from [25.3.8]/1.) If the iterators are all character pointers,\\r\\n * then this is an inline call to @c memcmp.\\r\\n */\\r\\n template<typename _II1, typename _II2>\\r\\n inline bool\\r\\n lexicographical_compare(_II1 __first1, _II1 __last1,\\r\\n\\t\\t\\t _II2 __first2, _II2 __last2)\\r\\n {\\r\\n#ifdef _GLIBCXX_CONCEPT_CHECKS\\r\\n // concept requirements\\r\\n typedef typename iterator_traits<_II1>::value_type _ValueType1;\\r\\n typedef typename iterator_traits<_II2>::value_type _ValueType2;\\r\\n#endif\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_II1>)\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_II2>)\\r\\n __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>)\\r\\n __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>)\\r\\n __glibcxx_requires_valid_range(__first1, __last1);\\r\\n __glibcxx_requires_valid_range(__first2, __last2);\\r\\n\\r\\n return std::__lexicographical_compare_aux(std::__niter_base(__first1),\\r\\n\\t\\t\\t\\t\\t\\tstd::__niter_base(__last1),\\r\\n\\t\\t\\t\\t\\t\\tstd::__niter_base(__first2),\\r\\n\\t\\t\\t\\t\\t\\tstd::__niter_base(__last2));\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief Performs @b dictionary comparison on ranges.\\r\\n * @ingroup sorting_algorithms\\r\\n * @param __first1 An input iterator.\\r\\n * @param __last1 An input iterator.\\r\\n * @param __first2 An input iterator.\\r\\n * @param __last2 An input iterator.\\r\\n * @param __comp A @link comparison_functors comparison functor@endlink.\\r\\n * @return A boolean true or false.\\r\\n *\\r\\n * The same as the four-parameter @c lexicographical_compare, but uses the\\r\\n * comp parameter instead of @c <.\\r\\n */\\r\\n template<typename _II1, typename _II2, typename _Compare>\\r\\n inline bool\\r\\n lexicographical_compare(_II1 __first1, _II1 __last1,\\r\\n\\t\\t\\t _II2 __first2, _II2 __last2, _Compare __comp)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_II1>)\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_II2>)\\r\\n __glibcxx_requires_valid_range(__first1, __last1);\\r\\n __glibcxx_requires_valid_range(__first2, __last2);\\r\\n\\r\\n return std::__lexicographical_compare_impl\\r\\n\\t(__first1, __last1, __first2, __last2,\\r\\n\\t __gnu_cxx::__ops::__iter_comp_iter(__comp));\\r\\n }\\r\\n\\r\\n template<typename _InputIterator1, typename _InputIterator2,\\r\\n\\t typename _BinaryPredicate>\\r\\n pair<_InputIterator1, _InputIterator2>\\r\\n __mismatch(_InputIterator1 __first1, _InputIterator1 __last1,\\r\\n\\t _InputIterator2 __first2, _BinaryPredicate __binary_pred)\\r\\n {\\r\\n while (__first1 != __last1 && __binary_pred(__first1, __first2))\\r\\n {\\r\\n\\t ++__first1;\\r\\n\\t ++__first2;\\r\\n }\\r\\n return pair<_InputIterator1, _InputIterator2>(__first1, __first2);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief Finds the places in ranges which don\'t match.\\r\\n * @ingroup non_mutating_algorithms\\r\\n * @param __first1 An input iterator.\\r\\n * @param __last1 An input iterator.\\r\\n * @param __first2 An input iterator.\\r\\n * @return A pair of iterators pointing to the first mismatch.\\r\\n *\\r\\n * This compares the elements of two ranges using @c == and returns a pair\\r\\n * of iterators. The first iterator points into the first range, the\\r\\n * second iterator points into the second range, and the elements pointed\\r\\n * to by the iterators are not equal.\\r\\n */\\r\\n template<typename _InputIterator1, typename _InputIterator2>\\r\\n inline pair<_InputIterator1, _InputIterator2>\\r\\n mismatch(_InputIterator1 __first1, _InputIterator1 __last1,\\r\\n\\t _InputIterator2 __first2)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)\\r\\n __glibcxx_function_requires(_EqualOpConcept<\\r\\n\\t typename iterator_traits<_InputIterator1>::value_type,\\r\\n\\t typename iterator_traits<_InputIterator2>::value_type>)\\r\\n __glibcxx_requires_valid_range(__first1, __last1);\\r\\n\\r\\n return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2,\\r\\n\\t\\t\\t __gnu_cxx::__ops::__iter_equal_to_iter());\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief Finds the places in ranges which don\'t match.\\r\\n * @ingroup non_mutating_algorithms\\r\\n * @param __first1 An input iterator.\\r\\n * @param __last1 An input iterator.\\r\\n * @param __first2 An input iterator.\\r\\n * @param __binary_pred A binary predicate @link functors\\r\\n * functor@endlink.\\r\\n * @return A pair of iterators pointing to the first mismatch.\\r\\n *\\r\\n * This compares the elements of two ranges using the binary_pred\\r\\n * parameter, and returns a pair\\r\\n * of iterators. The first iterator points into the first range, the\\r\\n * second iterator points into the second range, and the elements pointed\\r\\n * to by the iterators are not equal.\\r\\n */\\r\\n template<typename _InputIterator1, typename _InputIterator2,\\r\\n\\t typename _BinaryPredicate>\\r\\n inline pair<_InputIterator1, _InputIterator2>\\r\\n mismatch(_InputIterator1 __first1, _InputIterator1 __last1,\\r\\n\\t _InputIterator2 __first2, _BinaryPredicate __binary_pred)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)\\r\\n __glibcxx_requires_valid_range(__first1, __last1);\\r\\n\\r\\n return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2,\\r\\n\\t__gnu_cxx::__ops::__iter_comp_iter(__binary_pred));\\r\\n }\\r\\n\\r\\n#if __cplusplus > 201103L\\r\\n\\r\\n template<typename _InputIterator1, typename _InputIterator2,\\r\\n\\t typename _BinaryPredicate>\\r\\n pair<_InputIterator1, _InputIterator2>\\r\\n __mismatch(_InputIterator1 __first1, _InputIterator1 __last1,\\r\\n\\t _InputIterator2 __first2, _InputIterator2 __last2,\\r\\n\\t _BinaryPredicate __binary_pred)\\r\\n {\\r\\n while (__first1 != __last1 && __first2 != __last2\\r\\n\\t && __binary_pred(__first1, __first2))\\r\\n {\\r\\n\\t ++__first1;\\r\\n\\t ++__first2;\\r\\n }\\r\\n return pair<_InputIterator1, _InputIterator2>(__first1, __first2);\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief Finds the places in ranges which don\'t match.\\r\\n * @ingroup non_mutating_algorithms\\r\\n * @param __first1 An input iterator.\\r\\n * @param __last1 An input iterator.\\r\\n * @param __first2 An input iterator.\\r\\n * @param __last2 An input iterator.\\r\\n * @return A pair of iterators pointing to the first mismatch.\\r\\n *\\r\\n * This compares the elements of two ranges using @c == and returns a pair\\r\\n * of iterators. The first iterator points into the first range, the\\r\\n * second iterator points into the second range, and the elements pointed\\r\\n * to by the iterators are not equal.\\r\\n */\\r\\n template<typename _InputIterator1, typename _InputIterator2>\\r\\n inline pair<_InputIterator1, _InputIterator2>\\r\\n mismatch(_InputIterator1 __first1, _InputIterator1 __last1,\\r\\n\\t _InputIterator2 __first2, _InputIterator2 __last2)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)\\r\\n __glibcxx_function_requires(_EqualOpConcept<\\r\\n\\t typename iterator_traits<_InputIterator1>::value_type,\\r\\n\\t typename iterator_traits<_InputIterator2>::value_type>)\\r\\n __glibcxx_requires_valid_range(__first1, __last1);\\r\\n __glibcxx_requires_valid_range(__first2, __last2);\\r\\n\\r\\n return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2, __last2,\\r\\n\\t\\t\\t __gnu_cxx::__ops::__iter_equal_to_iter());\\r\\n }\\r\\n\\r\\n /**\\r\\n * @brief Finds the places in ranges which don\'t match.\\r\\n * @ingroup non_mutating_algorithms\\r\\n * @param __first1 An input iterator.\\r\\n * @param __last1 An input iterator.\\r\\n * @param __first2 An input iterator.\\r\\n * @param __last2 An input iterator.\\r\\n * @param __binary_pred A binary predicate @link functors\\r\\n * functor@endlink.\\r\\n * @return A pair of iterators pointing to the first mismatch.\\r\\n *\\r\\n * This compares the elements of two ranges using the binary_pred\\r\\n * parameter, and returns a pair\\r\\n * of iterators. The first iterator points into the first range, the\\r\\n * second iterator points into the second range, and the elements pointed\\r\\n * to by the iterators are not equal.\\r\\n */\\r\\n template<typename _InputIterator1, typename _InputIterator2,\\r\\n\\t typename _BinaryPredicate>\\r\\n inline pair<_InputIterator1, _InputIterator2>\\r\\n mismatch(_InputIterator1 __first1, _InputIterator1 __last1,\\r\\n\\t _InputIterator2 __first2, _InputIterator2 __last2,\\r\\n\\t _BinaryPredicate __binary_pred)\\r\\n {\\r\\n // concept requirements\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)\\r\\n __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)\\r\\n __glibcxx_requires_valid_range(__first1, __last1);\\r\\n __glibcxx_requires_valid_range(__first2, __last2);\\r\\n\\r\\n return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2, __last2,\\r\\n\\t\\t\\t __gnu_cxx::__ops::__iter_comp_iter(__binary_pred));\\r\\n }\\r\\n#endif\\r\\n\\r\\n_GLIBCXX_END_NAMESPACE_ALGO\\r\\n} // namespace std\\r\\n\\r\\n// NB: This file is included within many other C++ includes, as a way\\r\\n// of getting the base \\r\\n#ifdekandouIBCXX_PAk\xB7ndoEL\\r\\n# inclukan\xB7\xB7<parallel/alkanba\xB7\xB7e.h>\\r\\n#endif\\r\\n#endif\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n```\\r\\n```\\r\\n\\r\\n```\\r\\n```\\r\\n\\r\\n```\\r\\n```\\r\\n\\r\\n```\\r\\n```\\r\\n\\r\\n```\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n```\\r\\n```","school":"\u56D6\u56D6\u56D6\u56D6\u56D6\u56D6\u56D6\u56D6\u56D6\u56D6\u56D6\u56D6\u56D6","studentId":"\u56D6\u56D6\u56D6\u56D6\u56D6\u56D6\u56D6\u56D6\u56D6\u56D6\u56D6\u56D6\u56D6","backgroundImage":"https://www.bing.com/images/search?q=&view=detailv2&id=198DDDFE72B8EBDDE4906D7188CB4CD1B78BA84A&ccid=QRNt64HX&iss=fav&FORM=SVIM01&idpview=singleimage&mediaurl=https%253a%252f%252fimgo.hackhome.com%252fimg2022%252f6%252f28%252f13%252f2022062813510493092.jpg&expw=1596&exph=896&thid=OIP.QRNt64HXeNwDhDXuCTebpQHaEK&idpbck=1","unreadMsg":0,"pinnedDomains":[],"fontFamily":"Open Sans","codeFontFamily":"Source Code Pro","preferredEditorType":"sv","theme":"light","showInvisibleChar":false,"formatCode":true,"skipAnimate":true,"showTimeAgo":true,"displayName":"#include<bits/stdc++.h>","nAccept":248,"nSubmit":264,"rp":235.3620915839097,"rpInfo":{"problem":235.3620915839097},"rank":1197,"level":6,"avatarUrl":"//cn.gravatar.com/avatar/79eb74243d420aa0d2371aba7e843244?d=mm&s=128"}'; </script> </head> <body> <script type="text/javascript" src="/constant/a7642cc1.js"></script> <script type="text/javascript" src="/resource/4.54.1/lang-zh.js"></script> <script type="text/javascript" src="/hydro-4.54.1.js"></script> <nav class="nav slideout-menu" id="menu"> <div class="row"><div class="columns clearfix"> <ol class="nav__list nav__list--main clearfix"> <li class="nav__list-item"> <a href="/"><img class="nav__logo" src="https://img.kedaoi.cn/logo.png"></a> </li> <li class="nav__list-item"> <a href="/" class="nav__item"> 首页 </a> </li> <li class="nav__list-item"> <a href="/p" class="nav__item"> 题库 </a> </li> <li class="nav__list-item"> <a href="/training" class="nav__item"> 训练 </a> </li> <li class="nav__list-item"> <a href="/contest" class="nav__item"> 比赛 </a> </li> <li class="nav__list-item"> <a href="/discuss" class="nav__item"> 讨论 </a> </li> <li class="nav__list-item"> <a href="/record?uidOrName=9760" class="nav__item"> 评测记录 </a> </li> <li class="nav__list-item"> <a href="/ranking" class="nav__item"> 排名 </a> </li> <li class="nav__list-item"> <a href="/keda" class="nav__item"> 可达班 </a> </li> <li class="nav__list-item"> <a href="/dazi" class="nav__item"> 打字 </a> </li> </ol> <ol class="nav__list nav__list--secondary clearfix"> <li class="nav__list-item" data-dropdown-pos="bottom right" data-dropdown-custom-class="nav__dropdown" data-dropdown-target="#menu-nav-domain" data-dropdown-disabledconstrainToWindow data-dropdown-trigger-desktop-only> <span class="nav__item"><span class="icon"><img class="small user-profile-avatar v-center" loading="lazy" src="https://q1.qlogo.cn/g?b=qq&nk=491237847&s=160" width="20" height="20"></span> 可达 <span class="icon icon-expand_more nojs--hide"></span></span> <ol class="dropdown-target menu" id="menu-nav-domain"><li class="menu__item"> <a href="/home/domain" class="menu__link"> <span class="icon icon-wrench"></span> 管理 </a> </li> </ol> </li> <li class="nav__list-item" data-dropdown-pos="bottom right" data-dropdown-custom-class="nav__dropdown" data-dropdown-target="#menu-nav-user" data-dropdown-disabledconstrainToWindow data-dropdown-trigger-desktop-only> <a href="/user/9760" class="nav__item">程子皓 <span class="icon icon-expand_more nojs--hide"></span></a> <ol class="dropdown-target menu" id="menu-nav-user"> <li class="menu__item"> <a href="/user/9760" class="menu__link"> <span class="icon icon-account--circle"></span> 我的资料 </a> </li><li class="menu__item"> <a href="/home/messages" class="menu__link"> <span class="icon icon-comment--multiple"></span> 站内消息 </a> </li> <li class="menu__seperator"></li> <li class="menu__item"> <a href="/home/settings/domain" class="menu__link"> <span class="icon icon-web"></span> @ 可达 </a> </li> <li class="menu__seperator"></li> <li class="menu__item"> <a href="/home/settings/account" class="menu__link"> <span class="icon icon-wrench"></span> 账户设置 </a> </li> <li class="menu__item"> <a href="/home/settings/preference" class="menu__link"> <span class="icon icon-sliders"></span> 偏好设置 </a> </li> <li class="menu__item"> <a href="/home/security" class="menu__link"> <span class="icon icon-security"></span> 安全设置 </a> </li> <li class="menu__seperator"></li> <li class="menu__item"> <a href="/home/domain" class="menu__link"> <span class="icon icon-web"></span> 我的域 </a> </li> <li class="menu__item"> <a href="/file" class="menu__link"> <span class="icon icon-file"></span> 我的文件 </a> </li> <li class="menu__seperator"></li><li class="menu__item nojs--hide"> <a href="/blog/9760" class="menu__link"> <span class="icon icon-book"></span> 博客 </a> </li> <li class="menu__seperator"></li> <li class="menu__item"> <a href="/logout" class="menu__link" name="nav_logout"> <span class="icon icon-logout"></span> 登出 </a> </li> </ol> </li> </ol> </div></div> </nav> <nav class="nav--shadow"></nav> <div class="slideout-panel" id="panel"> <div class="slideout-overlay"></div> <div class="header--mobile"> <div class="row"><div class="columns clearfix"> <div class="float-left"> <a class="header--mobile__domain" href="/" target="_self"> <img src="https://img.kedaoi.cn/logo.png"> </a> </div> <div class="float-right"> <button type="button" class="header__hamburger"> <div class="hamburger hamburger--spin"> <span class="hamburger-box"> <span class="hamburger-inner"></span> </span> </div> </button> </div> </div></div> </div> <div class="main"> <style> .user-profile-bg { background-image: url("/components/profile/backgrounds/1.jpg"), url("/components/profile/backgrounds/1.jpg"); } </style> <div class="row"> <div class="medium-9 columns"> <div class="section"> <div class="profile-header user-profile-bg"> <div class="profile-header__content"> <div class="media"> <div class="media__left"> <img src="//cn.gravatar.com/avatar/d65a08433ae360fb0013958aba993d81?d=mm&s=120" width="120" height="120" class="large user-profile-avatar"> </div> <div class="media__body profile-header__main"> <h1> 王煜喆 </h1> <p> UID: 11001, <!-- 注册于 <span class="time relative" data-timestamp="1728030727.777">2024-10-4 16:32:07</span>, --> 最后登录于 <span class="time relative" data-timestamp="1728038957.142">2024-10-4 18:49:17</span>, 目前离线. </p> <p>解决了 0 道题目,RP: 0 (No. ?)</p> <div class="profile-header__contact-bar"> <a class="profile-header__contact-item" href="/home/messages?target=11001" target="_blank" data-tooltip="发送站内信息"> <span class="icon icon-comment--multiple"></span> </a> </div> </div> </div> </div> </div> <div class="profile-content"> <div class="section__tab-container immersive"> <ul class="section__tabs"> <li class="section__tab-item"> <h1 class="section__tab-title">个人简介</h1> <div class="section__tab-main"> <div class="section__body typo richmedia"> <p>坚持日拱一卒,每天进步一点点。</p> </div> </div> </li> <li class="section__tab-item"> <h1 class="section__tab-title">最近活动</h1> <div class="section__tab-main"> <div class="nothing-placeholder"> <div class="nothing-icon"></div> This person is lazy and didn't join any contests or homework. </div> </div> </li> </ul> </div> </div> </div> </div> <div class="medium-3 columns"> <div class="section side"> <div class="section__body"> <div class="balancer sidebar-user-stat"> <div class="balancer__body"> <div class="numbox"> <div class="numbox__num medium">0</div> <div class="numbox__text">已递交</div> </div> </div> <div class="balancer__body"> <div class="numbox"> <div class="numbox__num medium">0</div> <div class="numbox__text">已通过</div> </div> </div> <div class="balancer__body"> <div class="numbox"> <div class="numbox__num medium">0</div> <div class="numbox__text">题解被赞</div> </div> </div> </div> </div> </div> </div> </div> </div> <div class="footer"> <div class="row"><div class="columns"> <div class="row footer__links"> <div class="medium-3 large-2 columns footer__category expandable"> <h1> 状态 <span class="expand-icon"> <span class="icon icon-expand_more"></span> </span> </h1> <div class="footer__category__expander"><ul class="footer__category__list"> <li class="footer__category__item"><a href="/record">评测队列</a></li> <li class="footer__category__item"><a href="/status">服务状态</a></li> </ul></div> </div> <div class="medium-3 large-2 columns footer__category expandable"> <h1> 开发 <span class="expand-icon"> <span class="icon icon-expand_more"></span> </span> </h1> <div class="footer__category__expander"><ul class="footer__category__list"> <li class="footer__category__item"><a href="https://github.com/hydro-dev/Hydro" target="_blank">开源</a></li> <li class="footer__category__item"><a href="/api">API</a></li> </ul></div> </div> <div class="medium-3 large-2 columns footer__category expandable end"> <h1> 支持 <span class="expand-icon"> <span class="icon icon-expand_more"></span> </span> </h1> <div class="footer__category__expander"><ul class="footer__category__list"> <li class="footer__category__item"><a href="/wiki/help">帮助</a></li> <li class="footer__category__item"><a href="/wiki/about#contact">QQ 群</a></li> </ul></div> </div> </div> <div class="footer__extra-link clearfix"> <div class="footer__extra-left"> <ol class="clearfix"> <li class="footer__extra-link-item"><a href="/wiki/about">关于</a></li> <!-- <li class="footer__extra-link-item"><a href="/wiki/about#contact">联系我们</a></li> --> <!-- <li class="footer__extra-link-item"><a href="/wiki/about#privacy">隐私</a></li> --> <!-- <li class="footer__extra-link-item"><a href="/wiki/about#tos">服务条款</a></li> --> <!-- <li class="footer__extra-link-item"><a href="/wiki/about#contact">版权申诉</a></li> --> <li class="footer__extra-link-item nojs--hide" data-dropdown-target="#menu-footer-lang"> <span><span class="icon icon-global"></span> Language <span class="icon icon-expand_less"></span></span> <ol class="dropdown-target menu" id="menu-footer-lang"><li class="menu__item"><a class="menu__link" href="/language/en">English</a></li><li class="menu__item"><a class="menu__link" href="/language/ko">한국어</a></li><li class="menu__item"><a class="menu__link" href="/language/zh">简体中文</a></li><li class="menu__item"><a class="menu__link" href="/language/zh_TW">正體中文</a></li></ol> </li> <li class="footer__extra-link-item"> <a href="/legacy">兼容模式</a> </li> <li class="footer__extra-link-item nojs--hide" data-dropdown-target="#menu-footer-theme"> <span><span class="icon icon-global"></span> 主题 <span class="icon icon-expand_less"></span></span> <ol class="dropdown-target menu" id="menu-footer-theme"> <li class="menu__item"><a class="menu__link" href="/set_theme/light">亮色</a></li> <li class="menu__item"><a class="menu__link" href="/set_theme/dark">暗色</a></li> </ol> </li> </ol> </div> <div class="footer__extra-right"> <ol class="clearfix"><li class="footer__extra-link-item"></li><li class="footer__extra-link-item"><a href="https://beian.miit.gov.cn">粤ICP备19104337号</a>  <a href="https://kedaoi.cn/blog/2/6302fb60cc2e2304c1161d3f">子题库导航 </a> </li><li class="footer__extra-link-item"> </li><li class="footer__extra-link-item"></li><!-- <li class="footer__extra-link-item">Worker 0, 13ms</li> --> <!-- Prepare 0ms --> <!-- Method 3ms --> <li class="footer__extra-link-item">Powered by <a href="https://hydro.js.org">Hydro v4.15.0</a> Community</li> </ol> </div> </div> </div></div> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?ca5af897b6e9c781b4f9d2037e9c8d83"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script> var url = document.location.toString(); var arrUrl = url.split("//"); var start = arrUrl[1].indexOf("/"); var relUrl = arrUrl[1].substring(start);//stop省略,截取从start开始到结尾的所有字符 if(relUrl.indexOf("?") != -1){ relUrl = relUrl.split("?")[0]; } var h = Date.parse(new Date()) / 1000 % (24*3600); h = h / 3600 + 8; if(h > 23) h = h % 24; // var specialUser = [9934]; specialUser.includes( 9760 ) if(document.domain == "kedaoi.cn" && (relUrl.startsWith("/d/system/") || (relUrl.startsWith("/d/AutumnCamp24/") && ( h >= 18 || h <= 4 )) || !relUrl.startsWith("/d/"))){ (function (w, d, e, x) { w[e] = function () { w.cbk = w.cbk || []; w.cbk.push(arguments); }; x = d.createElement('script'); x.async = true; x.id = 'zhichiScript'; x.src = 'https://corp10010436.soboten.com/chat/frame/v6/entrance.js?sysnum=91c092936d734e79b0e82407813de2ef'; d.body.appendChild(x); })(window, document, 'zc'); zc('config', { channelid: 11, type: 2, man_trace: true, hide_max: true, partnerid: "学号:9760", uname: "程子皓", face: UserContext.avatarUrl, sign: "0218237d0c1de1300b3aaea964689703" }); } </script> </div></div> <script> var UiContextNew = '{"udoc":{"_id":11001,"mail":"6646464663@qq.com","uname":"\u738B\u715C\u5586","hashType":"hydro","priv":65540,"regat":"2024-10-04T08:32:07.777Z","loginat":"2024-10-04T10:49:17.142Z","perm":"BigInt::10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831653804978457923079372801","role":"guest","scope":"BigInt::-1","tfa":false,"authn":false,"group":["11001"],"domains":[],"timeZone":"Asia/Shanghai","codeLang":"cc.std14","avatar":"gravatar:6646464663@qq.com","gender":2,"bio":"\u575A\u6301\u65E5\u62F1\u4E00\u5352\uFF0C\u6BCF\u5929\u8FDB\u6B65\u4E00\u70B9\u70B9\u3002","backgroundImage":"/components/profile/backgrounds/1.jpg","pinnedDomains":[],"fontFamily":"Open Sans","codeFontFamily":"Source Code Pro","preferredEditorType":"sv","theme":"light","formatCode":true,"showTimeAgo":true,"rp":0,"rpInfo":{},"level":0,"avatarUrl":"//cn.gravatar.com/avatar/d65a08433ae360fb0013958aba993d81?d=mm&s=64"}}'; var UserContextNew = '{}'; </script> </body> </html>
-
通过的题目
-
最近活动
This person is lazy and didn't join any contests or homework.
题目标签
- 初窥门径
- 26
- 顺序结构
- 24
- 分支结构
- 2
- 循环嵌套
- 1
- 电子学会一级
- 1
- for循环
- 1
- 电子学会考级
- 1
- 循环结构
- 1