結果

問題 No.3680 セグメント釣り
コンテスト
ユーザー 👑 loop0919
提出日時 2026-07-03 00:09:57
言語 Rust
(1.97.1 + proconio + num + itertools)
コンパイル:
/usr/bin/rustc_custom
実行:
./target/release/main
結果
AC  
実行時間 119 ms / 2,000 ms
+ 61µs
コード長 659 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 550 ms
コンパイル使用メモリ 187,076 KB
実行使用メモリ 9,792 KB
最終ジャッジ日時 2026-09-05 12:32:49
合計ジャッジ時間 5,127 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 13
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

use proconio::input;

const INF: i64 = 2_000_000_000_000_000_000;
const LIMIT: i64 = 60;

fn pow_2(n: i64) -> i64 {
    1 << n
}

fn solve(s_x: i64, s_y: i64, t_x: i64, t_y: i64) -> i64 {
    if s_y.max(t_y) >= LIMIT {
        return (s_y - t_y).abs();
    }

    let mut ans = INF;

    for h in s_y.max(t_y)..=LIMIT {
        let dist_x = (s_x / pow_2(h) - t_x / pow_2(h)).abs();
        let dist_y = (h - s_y) + (h - t_y);
        ans = ans.min(dist_x + dist_y);
    }
    ans
}

fn main() {
    input! { t: usize };

    for _ in 0..t {
        input! { s_x: i64, s_y: i64, t_x: i64, t_y: i64 };
        println!("{}", solve(s_x, s_y, t_x, t_y));
    }
}
0