11#pragma once
22#include " ../acl_beats.hpp"
33
4- // CUT begin
4+ #include < cstdint>
5+ #include < numeric>
6+
57// Verified: https://yukicoder.me/submissions/611774
68namespace yuki880 {
79constexpr uint32_t BINF = 1 << 30 ;
@@ -28,7 +30,7 @@ S op(S l, S r) {
2830 ret.sum = l.sum + r.sum ;
2931 ret.lcm = (l.lcm >= BINF or r.lcm >= BINF)
3032 ? BINF
31- : std::min<uint64_t >(BINF, (uint64_t )l.lcm * r.lcm / std::__gcd (l.lcm , r.lcm ));
33+ : std::min<uint64_t >(BINF, (uint64_t )l.lcm * r.lcm / std::gcd (l.lcm , r.lcm ));
3234 ret.sz = l.sz + r.sz ;
3335 if (l.all_same and r.all_same and l.max == r.max ) ret.all_same = true ;
3436 return ret;
@@ -43,7 +45,7 @@ struct F {
4345};
4446
4547F composition (F fnew, F fold) {
46- return fnew.reset ? fnew : F (std::__gcd (fnew.dogcd , fold.dogcd ), fold.reset );
48+ return fnew.reset ? fnew : F (std::gcd (fnew.dogcd , fold.dogcd ), fold.reset );
4749}
4850
4951F id () { return F (); }
@@ -53,7 +55,7 @@ S mapping(F f, S x) {
5355 if (f.reset ) x = S (f.reset , x.sz );
5456 if (f.dogcd ) {
5557 if (x.all_same )
56- x = S (std::__gcd (f.dogcd , x.max ), x.sz );
58+ x = S (std::gcd (f.dogcd , x.max ), x.sz );
5759 else if (f.dogcd and (x.lcm == BINF or f.dogcd % x.lcm ))
5860 x.fail = true ;
5961 }
0 commit comments