はまやんはまやんはまやん

hamayanhamayan's blog

Swimming [CPSCO2019 Session4 A]

https://atcoder.jp/contests/cpsco2019-s4/tasks/cpsco2019_s4_a

解説

https://atcoder.jp/contests/cpsco2019-s4/submissions/5284961

まず、一周2Lメートルなので、X mod 2Lを考えることにしよう。
X mod 2LはXを2Lで割ったあまりのことで、X=a*2L+bと書ける時は、
a周回って、そこから更にbメートル泳ぐように考えることができる。
 
場面として、行き(X≦L)と帰り(L<X)があるので、そこで場合分けする。
行きの場合は普通に移動距離=プールの左端からの距離
帰りの場合は、プールの左端からの距離=往復の距離ー移動距離
これで答える。

int L, X;
//---------------------------------------------------------------------------------------------------
void _main() {
	cin >> L >> X;
	
	X %= L*2;
 
	if (X <= L) cout << X << endl;
	else cout << (L * 2 - X) << endl;
}