Files
rose-ash/lib/ocaml/baseline/count_subarrays_k.ml
giles aaa6020037
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 24s
ocaml: phase 5.1 count_subarrays_k.ml baseline (sum-k subarrays = 7)
Count contiguous subarrays summing to a target k using a prefix
sum table:

  prefix[i+1] = prefix[i] + arr[i]
  count = |{ (i, j) : 0 <= i < j <= n,  prefix[j] - prefix[i] = k }|

For arr = [1; 1; 1; 2; -1; 3; 1; -2; 4] and k = 3, the seven
witnesses are:

  [1, 1, 1]            (0..2)
  [1, 1, 2, -1]        (1..4)
  [1, 2]               (2..3)
  [2, -1, 3, 1, -2]    (3..7)
  [-1, 3, 1]           (4..6)
  [3]                  (5..5)
  [1, -2, 4]           (6..8)

Negative-valued arrays exercise mixed-sign integer arithmetic.

186 baseline programs total.
2026-05-11 03:04:14 +00:00

17 lines
395 B
OCaml

let count_subarr_sum_k arr k =
let n = Array.length arr in
let prefix = Array.make (n + 1) 0 in
for i = 0 to n - 1 do
prefix.(i + 1) <- prefix.(i) + arr.(i)
done;
let count = ref 0 in
for i = 0 to n - 1 do
for j = i + 1 to n do
if prefix.(j) - prefix.(i) = k then count := !count + 1
done
done;
!count
;;
count_subarr_sum_k [| 1; 1; 1; 2; -1; 3; 1; -2; 4 |] 3