結果

問題 No.3680 セグメント釣り
コンテスト
ユーザー cacampu
提出日時 2026-09-05 14:18:19
言語 Rust
(1.97.1 + proconio + num + itertools)
コンパイル:
/usr/bin/rustc_custom
実行:
./target/release/main
結果
WA  
実行時間 -
コード長 995 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 3,361 ms
コンパイル使用メモリ 186,228 KB
実行使用メモリ 7,716 KB
最終ジャッジ日時 2026-09-05 14:18:50
合計ジャッジ時間 10,889 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge6_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other WA * 5 TLE * 1 -- * 7
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

use std::mem::swap;

use proconio::{fastout, input};

#[fastout]
fn main() {
    input! {
        t: usize,
        cases: [(usize,usize,usize,usize); t],
    }
    let idx = |x: usize, y: usize| (y, x / (1 << (y.min(60))));
    for (sx, sy, tx, ty) in cases {
        let (mut l, mut r) = (idx(sx, sy), idx(tx, ty));
        if sx > tx {
            swap(&mut l, &mut r);
        }
        let mut ans = 0;
        while l != r {
            if l.1 == 0 && r.1 == 0 {
                ans += l.0.abs_diff(r.0);
                break;
            } else if l.0 < r.0 {
                if l.1 % 2 == 1 {
                    l = (l.0, l.1 + 1);
                } else {
                    l = (l.0 + 1, l.1 / 2);
                }
            } else {
                if r.1 % 2 == 0 {
                    r = (r.0, r.1 - 1);
                } else {
                    r = (r.0 + 1, r.1 / 2);
                }
            }
            ans += 1;
        }
        println!("{}", ans);
    }
}

0