結果
| 問題 | No.3775 Distant Swap |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-11-04 23:39:53 |
| 言語 | Fix (1.6.0 + cp-library + minilib) |
| 結果 |
AC
不安定
|
| 実行時間 | 8 ms / 2,000 ms |
| + 871µs | |
| コード長 | 920 bytes |
| 記録 | |
| コンパイル時間 | 18,867 ms |
| コンパイル使用メモリ | 668,748 KB |
| 実行使用メモリ | 9,916 KB |
| 最終ジャッジ日時 | 2026-11-04 23:40:20 |
| 合計ジャッジ時間 | 14,333 ms |
|
ジャッジサーバーID (参考情報) |
judge7_0 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 20 |
コンパイルメッセージ
make: 'lib.o' は更新済みです.
ソースコード
module Main;
import CPLib.IO;
main: IO ();
main = (
let (n, k) = (*read_i, *read_i);
let p = *read_is(n);
let (ans, p) = loop(
([], p), |(ans, p)|
let size_before = ans.@size;
let (ans, p) = range(0, n-k).fold(
(ans, p), |i, (ans, p)|
if p.@(i) < p.@(i+k) { (ans, p) };
let ans = ans.push_back((i, i+k));
let v1 = p.@(i);
let v2 = p.@(i+k);
let p = p.set(i, v2).set(i+k, v1);
(ans, p)
);
let size_after = ans.@size;
if size_before == size_after { break $ (ans, p) };
continue $ (ans, p)
);
let sorted = range(0, n-1).check_all(|i| p.@(i) < p.@(i+1));
if !sorted {
println $ "-1"
} else {
println $ ans.@size.to_string;;
ans.to_iter.map(|(a, b)|
"{} {}\n".format((a+1, b+1))
).concat_iter.println
}
);