結果

問題 No.2561 みんな大好きmod 998
ユーザー chaemonchaemon
提出日時 2023-12-02 15:31:40
言語 Nim
(2.0.2)
結果
TLE  
実行時間 -
コード長 15,291 bytes
コンパイル時間 5,385 ms
コンパイル使用メモリ 94,244 KB
実行使用メモリ 6,676 KB
最終ジャッジ日時 2023-12-02 15:32:33
合計ジャッジ時間 52,669 ms
ジャッジサーバーID
(参考情報)
judge13 / judge9
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
6,676 KB
testcase_01 AC 5 ms
6,676 KB
testcase_02 AC 1 ms
6,676 KB
testcase_03 AC 69 ms
6,676 KB
testcase_04 TLE -
testcase_05 AC 3,973 ms
6,676 KB
testcase_06 AC 3,769 ms
6,676 KB
testcase_07 AC 499 ms
6,676 KB
testcase_08 AC 1 ms
6,676 KB
testcase_09 AC 4 ms
6,676 KB
testcase_10 AC 2 ms
6,676 KB
testcase_11 AC 498 ms
6,676 KB
testcase_12 AC 1 ms
6,676 KB
testcase_13 AC 127 ms
6,676 KB
testcase_14 AC 252 ms
6,676 KB
testcase_15 AC 3,946 ms
6,676 KB
testcase_16 AC 500 ms
6,676 KB
testcase_17 AC 2 ms
6,676 KB
testcase_18 AC 5 ms
6,676 KB
testcase_19 AC 1,978 ms
6,676 KB
testcase_20 AC 33 ms
6,676 KB
testcase_21 AC 2 ms
6,676 KB
testcase_22 AC 2 ms
6,676 KB
testcase_23 AC 4 ms
6,676 KB
testcase_24 AC 2 ms
6,676 KB
testcase_25 AC 2 ms
6,676 KB
testcase_26 AC 995 ms
6,676 KB
testcase_27 AC 3,955 ms
6,676 KB
testcase_28 AC 1,978 ms
6,676 KB
testcase_29 AC 126 ms
6,676 KB
testcase_30 AC 251 ms
6,676 KB
testcase_31 AC 992 ms
6,676 KB
testcase_32 AC 3,974 ms
6,676 KB
testcase_33 AC 127 ms
6,676 KB
testcase_34 AC 3,950 ms
6,676 KB
testcase_35 AC 1,000 ms
6,676 KB
testcase_36 AC 998 ms
6,676 KB
testcase_37 AC 126 ms
6,676 KB
testcase_38 AC 498 ms
6,676 KB
testcase_39 AC 251 ms
6,676 KB
testcase_40 AC 251 ms
6,676 KB
testcase_41 AC 498 ms
6,676 KB
testcase_42 AC 2,001 ms
6,676 KB
testcase_43 AC 127 ms
6,676 KB
testcase_44 AC 252 ms
6,676 KB
testcase_45 AC 2,004 ms
6,676 KB
testcase_46 AC 1,987 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: 0db679a6f960c0bc71b5edc3b882e208  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
    a:seq[int]
    ans = 0
  proc f() =
    if a.len == K:
      if S2 <= S1:
        debug a, S1, S2
        ans.inc
        return
    var L: int
    if a.len == 0:
      L = 1
    else:
      L = a[^1] + 1
    for x in L .. N:
      a.add x
      var
        S1_old = S1
        S2_old = S2
      S1 = (S1 + A[x - 1]) mod 998
      S2 = (S2 + A[x - 1]) mod 998244353
      f()
      S1 = S1_old
      S2 = S2_old
      discard a.pop
  f()
  echo ans mod 998
  discard

solve()

0