// End-to-end check that memory_limit is actually enforced by the runner. // The solution allocates N MiB (argv[1]) and touches every page. // // - "within_limit" allocates 16 MiB under a 256 MiB cap → expected PASS // - "exceeds_limit" allocates 256 MiB under a 64 MiB cap → expected MLE // // The workflow runs judge --json and asserts these statuses via jq. build "$CC -O2 -std=c11 -Wall -Wextra solution.c -o solution" build_windows "if /I \"%CC%\"==\"msvc\" (cl /nologo /O2 /W3 solution.c /Fe:solution.exe) else (%CC% -O2 -std=c11 -Wall -Wextra solution.c -o solution.exe)" binary = "solution" timeout 10s normalize_crlf = true group("within_limit") { weight = 1.0 memory_limit = 256M test("allocate_16mb") { args = ["16"] stdout = "ok 16\n" } } group("exceeds_limit") { weight = 0.0 // score doesn't matter — we assert the status in CI memory_limit = 64M test("allocate_256mb") { args = ["256"] // no stdout matcher: process is expected to be killed before it prints } }