結果
| 問題 | No.3680 セグメント釣り |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-09-05 14:18:19 |
| 言語 | Rust (1.97.1 + proconio + num + itertools) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 995 bytes |
| 記録 | |
| コンパイル時間 | 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 |
ソースコード
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);
}
}