1#include"../../kyopro_library/template.hpp"
8 if(p1==p2)
return p1==target;
9 return (target-p2)*(p2-p1)*(p1-target)>=0;
20 if(p1>p2) swap(p1,p2);
21 return min(p2-p1,n-(p2-p1));
26 return p1<p2 ? p2-p1 : (n+p2-p1)%n;
31 return p1>p2 ? p1-p2 : (n+p1-p2)%n;
ll DistanceMin(ll p1, ll p2, ll n)
サイズ n の円環上で p1->p2 に移動する距離を返す。
bool BetweenDecrement(ll p1, ll p2, ll target)
円環上で p1->p2 に-方向に移動する際に target を通過するかを判定する。
bool BetweenIncrement(ll p1, ll p2, ll target)
円環上で p1->p2 に+方向に移動する際に target を通過するかを判定する。 verify: https://atcoder.jp/contests/abc367/tasks/abc367_a
ll DistanceIncrement(ll p1, ll p2, ll n)
サイズ n の円環上で p1->p2 に+方向に移動する距離を返す。
ll DistanceDecrement(ll p1, ll p2, ll n)
サイズ n の円環上で p1->p2 に-方向に移動する距離を返す。