25 lines
536 B
Text
25 lines
536 B
Text
MODE YIELDINT = PROC(INT)VOID;
|
|
|
|
PROC gen equilibrium index = ([]INT arr, YIELDINT yield)VOID:
|
|
(
|
|
INT sum := 0;
|
|
FOR i FROM LWB arr TO UPB arr DO
|
|
sum +:= arr[i]
|
|
OD;
|
|
|
|
INT left:=0, right:=sum;
|
|
FOR i FROM LWB arr TO UPB arr DO
|
|
right -:= arr[i];
|
|
IF left = right THEN yield(i) FI;
|
|
left +:= arr[i]
|
|
OD
|
|
);
|
|
|
|
test:(
|
|
[]INT arr = []INT(-7, 1, 5, 2, -4, 3, 0)[@0];
|
|
# FOR INT index IN # gen equilibrium index(arr, # ) DO ( #
|
|
## (INT index)VOID:
|
|
print(index)
|
|
# OD # );
|
|
print(new line)
|
|
)
|