import "std.zc" fn binary_search(arr: int*, size: isize, target: int) -> isize { let low: isize = 0; let high: isize = size - 1; while low <= high { let mid = low + (high - low) / 2; if arr[mid] == target { return mid; } else if arr[mid] < target { low = mid + 1; } else { high = mid - 1; } } return -1; } fn print_array(arr: int*, size: isize) { "["..; for i in 0..size { "{arr[i]}"..; if i < size - 1 { ", "..; } } "]"; } fn main() { let v = Vec::new(); defer v.free(); let values = [1, 2, 3, 5, 6, 7, 8, 9, 10, 12]; for i in 0..10 { v.push(values[i]); } "Array: "..; print_array(v.data, (int)v.len); let target = 7; let result = binary_search(v.data, (isize)v.len, target); "Found {target} at index {result}"; }