This documentation is automatically generated by online-judge-tools/verification-helper
/*
* @title MonoidRangeMinPointUpdate - [区間min, 点更新]
* @docs md/operator/monoid/MonoidRangeMinPointUpdate.md
*/
template<class T> struct MonoidRangeMinPointUpdate {
using TypeNode = T;
inline static constexpr TypeNode unit_node = (1LL<<31)-1;
inline static constexpr TypeNode func_fold(TypeNode l,TypeNode r){return min(l,r);}
inline static constexpr TypeNode func_operate(TypeNode l,TypeNode r){return r;}
inline static constexpr bool func_check(TypeNode nodeVal,TypeNode var){return var > nodeVal;}
};
#line 1 "lib/99-operator/monoid/MonoidRangeMinPointUpdate.cpp"
/*
* @title MonoidRangeMinPointUpdate - [区間min, 点更新]
* @docs md/operator/monoid/MonoidRangeMinPointUpdate.md
*/
template<class T> struct MonoidRangeMinPointUpdate {
using TypeNode = T;
inline static constexpr TypeNode unit_node = (1LL<<31)-1;
inline static constexpr TypeNode func_fold(TypeNode l,TypeNode r){return min(l,r);}
inline static constexpr TypeNode func_operate(TypeNode l,TypeNode r){return r;}
inline static constexpr bool func_check(TypeNode nodeVal,TypeNode var){return var > nodeVal;}
};