地下階を階、地上を階と値を変更します。これにより連続した整数列となります。よって2つの値の差の絶対値が答えとなります。
Rust
xxxxxxxxxx
use proconio::*;
fn conv(c: char, n: i64) -> i64 {
match c {
'B' => -n,
'F' => n-1,
_ => unreachable!(),
}
}
fn solve() -> i64 {
input! {
c1: char,
mut n1: i64,
c2: char,
mut n2: i64,
}
n1 = conv(c1, n1);
n2 = conv(c2, n2);
(n2 - n1).abs()
}
fn main() {
input! {
t: usize,
}
for _ in 0..t {
println!("{}", solve());
}
}
C++
xxxxxxxxxx
using namespace std;
int main() {
int t; cin >> t;
for (int i=0; i<t; i++) {
char c1, c2; int n1, n2;
cin >> c1 >> n1 >> c2 >> n2;
auto conv = [&] (char c, int n) -> int {return c == 'B'? -n : n - 1;};
cout << abs(conv(c1, n1) - conv(c2, n2)) << '\n';
}
}