結果

問題 No.320 眠れない夜に
コンテスト
ユーザー 👑 tttmmmyyyy
提出日時 2026-11-07 11:52:16
言語 Fix
(1.6.0 + cp-library + minilib)
コンパイル:
fix_c _filename_
実行:
./a.out
結果
AC  
実行時間 0 ms / 2,000 ms
+ 793µs
コード長 1,451 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 9,177 ms
コンパイル使用メモリ 687,644 KB
実行使用メモリ 9,904 KB
最終ジャッジ日時 2026-11-07 11:52:38
合計ジャッジ時間 12,433 ms
ジャッジサーバーID
(参考情報)
judge4_0 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 31
権限があれば一括ダウンロードができます
コンパイルメッセージ
make: 'lib.o' は更新済みです.

ソースコード

diff #
raw source code

module Main;

// import BinaryHeap;
// import BoolArray;
// import CPLib.Arithmetic;
// import CPLib.Bipartite;
// import CPLib.Bits;
// import CPLib.Convolution;
// import CPLib.DSegtree;
// import CPLib.Graph;
import CPLib.IO;
// import CPLib.LDSegtree;
// import CPLib.LSegtree;
// import CPLib.MaxFlow;
// import CPLib.Memoize;
// import CPLib.MinCostFlow;
// import CPLib.Misc;
// import CPLib.Monoid;
// import CPLib.Segtree;
// import CPLib.String;
// import CPLib.Trait;
// import CPLib.TwoSat;
// import CPLib.UnionFind;
// import CPLib.ZP;
// import HashMap;
// import HashSet;

main : IO () = (
    let iN = *read_i;
    let iM = *read_i;
    let fib = range(2, iN).fold([1,1], |_, fib|
        let x = fib.@(fib.@size-1);
        let y = fib.@(fib.@size-2);
        fib.push_back(x + y)
    );
    if iM > fib.@(iN-1) {
        println("-1")
    };
    let rest = fib.@(iN-1) - iM;
    let fib = fib.pop_back.pop_back;
    let ans = loop((rest, 0, fib), |(rest, cnt, fib)|
        if rest == 0 { some(cnt).break };
        if fib.is_empty { none().break };
        let (cnt, rest) = if fib.@(fib.@size-1) <= rest {
            let cnt = cnt + 1;
            let rest = rest - fib.@(fib.@size-1);
            (cnt, rest)
        } else { (cnt, rest) };
        let fib = fib.pop_back;
        (rest, cnt, fib).continue
    );
    match ans {
        none() => println("-1"),
        some(cnt) => cnt.to_string.println
    };;
    pure()
);
0