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: bbba72c9e28039f4c2e0c617a8fc6527 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 # see https://github.com/zer0-star/Nim-ACL/tree/master/src/atcoder/extra/other/binary_search.nim import atcoder/extra/other/binary_search proc solve() = let T = nextInt() proc solve1() = var N, X = nextInt() let S = (N * (N + 1)) div 2 if S > X: echo -1;return var A = Seq[int] for i in N: var M = if i == 0: 2 * 10^18 div N else: A[^1] proc f(a:int):bool = # A[i] = aが許されるか let n = N - i # a, a - 1, ..., a - n + 1での和がX以上になる let S = ((a + a - n + 1) * n) div 2 return S >= X let a = f.minLeft(1 .. M) A.add a X -= a echo A.join(" ") discard for _ in T: solve1() discard solve()