Bloxorz II
题号:NC51039
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

Have you solved the previous problem yet, my friend? As a kid, little Tom has no much patience at all. He turns to play something which is more interesting. Actually he is inventing his own 'Bloxorz' game. Without such many rules and constraints, the new 'Bloxorz' game, which is invented by little Tom, has an infinite plane with all of its cells being rigid cells. (What? Don't know rigid cells? Go to 'Bloxorz I' for more information.)

With the target cell stably located cell (0,0), your task is to tell little Tom what is the minimum number of moves for the box from the given initial cell to the target cell in this infinite plane.

输入描述:

Input contains multiple test cases. Each test case contains one letter and two integers on a single line which describes the initial cell and state of the box. The letter will be either 'U' for stands Up, 'H' for lies down towards increasing y axis or 'V' for lies down towards incresing x axis. The two integers x, y (0 ≤ x, y ≤ 1000000000) is the only one cell that box stands on or the one closer to the origin from the two cells that box lies on.

输出描述:

For each test cases output one line with the minimum number of moves, which the box could right stand on the origion cell (0,0).
示例1

输入

复制
U 0 0
H 0 0
V 1 0

输出

复制
0
4
1

说明

The plane is infinite, so you may pass through some cell with negative coodinates if you want to.


picture of the coordinate