結果

問題 No.3680 セグメント釣り
コンテスト
ユーザー urectanc
提出日時 2026-09-05 14:31:05
言語 Rust
(1.97.1 + proconio + num + itertools)
コンパイル:
/usr/bin/rustc_custom
実行:
./target/release/main
結果
AC  
実行時間 48 ms / 2,000 ms
+ 362µs
コード長 754 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 3,399 ms
コンパイル使用メモリ 183,336 KB
実行使用メモリ 6,272 KB
最終ジャッジ日時 2026-09-05 14:31:27
合計ジャッジ時間 6,660 ms
ジャッジサーバーID
(参考情報)
judge4_0 / judge7_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 13
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

use proconio::{fastout, input};

#[fastout]
fn main() {
    input! { t: usize }

    for _ in 0..t {
        input! {
            sx: u128, sy: u128,
            tx: u128, ty: u128,
        }
        let ans = solve(sx, sy, tx, ty);
        println!("{ans}");
    }
}

fn solve(sx: u128, sy: u128, tx: u128, ty: u128) -> u128 {
    if sy != ty {
        let y = sy.max(ty);
        return sy.abs_diff(ty) + solve(sx, y, tx, y);
    }

    let mut ans = u128::MAX;
    for y in sy.. {
        let w = 2u128.saturating_pow(y.min(u32::MAX as _) as _);
        let sq = sx / w;
        let tq = tx / w;
        let cand = y.abs_diff(sy) * 2 + sq.abs_diff(tq);
        ans = ans.min(cand);

        if sq == tq {
            break;
        }
    }

    ans
}
0