結果

問題 No.2561 みんな大好きmod 998
ユーザー chaemonchaemon
提出日時 2023-12-02 15:35:01
言語 Nim
(2.0.2)
結果
AC  
実行時間 1,508 ms / 4,000 ms
コード長 15,164 bytes
コンパイル時間 4,587 ms
コンパイル使用メモリ 94,204 KB
実行使用メモリ 6,676 KB
最終ジャッジ日時 2023-12-02 15:35:26
合計ジャッジ時間 23,606 ms
ジャッジサーバーID
(参考情報)
judge13 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
6,676 KB
testcase_01 AC 2 ms
6,676 KB
testcase_02 AC 1 ms
6,676 KB
testcase_03 AC 23 ms
6,676 KB
testcase_04 AC 1,482 ms
6,676 KB
testcase_05 AC 1,508 ms
6,676 KB
testcase_06 AC 1,419 ms
6,676 KB
testcase_07 AC 193 ms
6,676 KB
testcase_08 AC 2 ms
6,676 KB
testcase_09 AC 2 ms
6,676 KB
testcase_10 AC 1 ms
6,676 KB
testcase_11 AC 193 ms
6,676 KB
testcase_12 AC 1 ms
6,676 KB
testcase_13 AC 51 ms
6,676 KB
testcase_14 AC 99 ms
6,676 KB
testcase_15 AC 1,460 ms
6,676 KB
testcase_16 AC 194 ms
6,676 KB
testcase_17 AC 1 ms
6,676 KB
testcase_18 AC 3 ms
6,676 KB
testcase_19 AC 741 ms
6,676 KB
testcase_20 AC 14 ms
6,676 KB
testcase_21 AC 1 ms
6,676 KB
testcase_22 AC 2 ms
6,676 KB
testcase_23 AC 2 ms
6,676 KB
testcase_24 AC 1 ms
6,676 KB
testcase_25 AC 2 ms
6,676 KB
testcase_26 AC 379 ms
6,676 KB
testcase_27 AC 1,483 ms
6,676 KB
testcase_28 AC 740 ms
6,676 KB
testcase_29 AC 51 ms
6,676 KB
testcase_30 AC 100 ms
6,676 KB
testcase_31 AC 380 ms
6,676 KB
testcase_32 AC 1,484 ms
6,676 KB
testcase_33 AC 51 ms
6,676 KB
testcase_34 AC 1,486 ms
6,676 KB
testcase_35 AC 378 ms
6,676 KB
testcase_36 AC 379 ms
6,676 KB
testcase_37 AC 51 ms
6,676 KB
testcase_38 AC 193 ms
6,676 KB
testcase_39 AC 99 ms
6,676 KB
testcase_40 AC 99 ms
6,676 KB
testcase_41 AC 194 ms
6,676 KB
testcase_42 AC 741 ms
6,676 KB
testcase_43 AC 51 ms
6,676 KB
testcase_44 AC 99 ms
6,676 KB
testcase_45 AC 767 ms
6,676 KB
testcase_46 AC 743 ms
6,676 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import macros
macro Please(x): untyped = nnkStmtList.newTree()

Please use Nim-ACL
Please use Nim-ACL
Please use Nim-ACL


static:
  when not defined SecondCompile:
    # md5sum: 9f6f5c785cce0127ffdc80114c6378a4  atcoder.tar.xz

    template getFileName():string = instantiationInfo().filename
    let fn = getFileName()
    block:
      let (output, ex) = gorgeEx("if [ -e ./atcoder ]; then exit 1; else exit 0; fi")
      # doAssert ex == 0, "atcoder directory already exisits"
    discard staticExec("echo \"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\" | base64 -d > atcoder.tar.xz && tar -Jxvf atcoder.tar.xz")
    let (output, ex) = gorgeEx("nim cpp -d:release -d:SecondCompile -d:danger --path:./ --opt:speed --multimethods:on --warning[SmallLshouldNotBeUsed]:off --checks:off -o:a.out " & fn)
    discard staticExec("rm -rf ./atcoder");doAssert ex == 0, output;quit(0)


when defined SecondCompile:
  const DO_CHECK = false;const DEBUG = false
else:
  const DO_CHECK = true;const DEBUG = true
const
  USE_DEFAULT_TABLE = true
  DO_TEST = false

# see https://github.com/zer0-star/Nim-ACL/tree/master/src/atcoder/extra/header/chaemon_header.nim
include atcoder/extra/header/chaemon_header


proc solve() =
  let N, K = nextInt()
  let A = Seq[N: nextInt()]
  var
    S1, S2 = 0
    ans = 0
  proc f(L = 1, num = 0) =
    if num == K:
      if S2 <= S1:
        ans.inc
        return
    for x in L .. N:
      var
        S1_old = S1
        S2_old = S2
      S1 = (S1 + A[x - 1]) mod 998
      S2 = (S2 + A[x - 1]) mod 998244353
      f(x + 1, num + 1)
      S1 = S1_old
      S2 = S2_old
  f()
  echo ans mod 998
  discard

solve()

0