1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
program Ch1;
{$mode objfpc}
uses
SysUtils,Types;
var
A1:TIntegerDynArray;
A2:TIntegerDynArray;
procedure QuickSort(var A:TIntegerDynArray;Left,Right:Integer);
var
I,J:Integer;
Pivot,Temp:Integer;
begin
I := Left;
J := Right;
Pivot := A[(Left + Right) div 2];
repeat
while Pivot > A[I] do Inc(I);
while Pivot < A[J] do Dec(J);
if I <= J then
begin
Temp := A[I];
A[I] := A[J];
A[J] := Temp;
Inc(I);
Dec(J);
end;
until I > J;
if Left < J then QuickSort(A, Left, J);
if I < Right then QuickSort(A, I, Right);
end;
function MaxGap(var Arr:TIntegerDynArray):Integer;
var
I,Temp,Max:Integer;
begin
if Length(Arr) < 2 then Exit(0);
I := 0;
Max := 0;
Result := 0;
QuickSort(Arr,0,High(Arr));
while I < Length(Arr) do
begin
Temp := Abs(Arr[I] - Arr[I+1]);
if(Temp > Max) then Max := Temp;
Inc(I,2);
end;
for I := Low(Arr) to Pred(High(Arr)) do
if Abs(Arr[I] - Arr[I+1]) = Max then Inc(Result);
end;
begin
A1 := [2,5,8,1];
A2 := [3];
WriteLn(MaxGap(A1));
WriteLn(MaxGap(A2));
end.
|