program JumpArray;
function CanReachLastIndex(arr: array of Integer; size: Integer): Boolean;
var
currentIndex: Integer;
begin
currentIndex := 0;
while currentIndex < size do
begin
// If we reach the last index, return true
if currentIndex = size - 1 then
begin
CanReachLastIndex := True;
Exit;
end;
// If jump goes out of bounds, stop
if currentIndex + arr[currentIndex] >= size then
begin
CanReachLastIndex := False;
Exit;
end;
// Move to the next index by jumping
currentIndex := currentIndex + arr[currentIndex];
end;
CanReachLastIndex := False;
end;
var
vec: array[0..4] of Integer = (2, 3, 1, 1, 4);
size: Integer;
begin
size := Length(vec);
if CanReachLastIndex(vec, size) then
Writeln('Yes, we can reach the last index.')
else
Writeln('No, we cannot reach the last index.');
end.
(*
run:
Yes, we can reach the last index.
*)