program LongestConsecutiveSequence;
const
MAX_SIZE = 1024;
type
IntArray = array[1..MAX_SIZE] of Integer;
var
nums: IntArray;
numCount: Integer;
function Contains(setArr: IntArray; setSize, value: Integer): Boolean;
var
i: Integer;
begin
for i := 1 to setSize do
if setArr[i] = value then
begin
Contains := True;
Exit;
end;
Contains := False;
end;
procedure Insert(var setArr: IntArray; var setSize: Integer; value: Integer);
begin
if not Contains(setArr, setSize, value) then
begin
Inc(setSize);
setArr[setSize] := value;
end;
end;
function LongestConsecutive(nums: IntArray; length: Integer): Integer;
var
setArr: IntArray;
setSize: Integer;
i, num, currentNum, currentStreak, longestStreak: Integer;
begin
setSize := 0;
for i := 1 to length do
Insert(setArr, setSize, nums[i]);
longestStreak := 0;
for i := 1 to setSize do
begin
num := setArr[i];
if not Contains(setArr, setSize, num - 1) then
begin
currentNum := num;
currentStreak := 1;
while Contains(setArr, setSize, currentNum + 1) do
begin
Inc(currentNum);
Inc(currentStreak);
end;
if currentStreak > longestStreak then
longestStreak := currentStreak;
end;
end;
LongestConsecutive := longestStreak;
end;
var
result: Integer;
begin
// Initialize input array
numCount := 6;
nums[1] := 680;
nums[2] := 4;
nums[3] := 590;
nums[4] := 3;
nums[5] := 2;
nums[6] := 1;
result := LongestConsecutive(nums, numCount);
WriteLn('Length of the longest consecutive sequence: ', result);
end.
(*
run:
Length of the longest consecutive sequence: 4
*)