program Foo;
{$MODE OBJFPC}{$LONGSTRINGS ON}
function SecondLargest(const AVector: array of Integer): Integer;
var
Second: Integer absolute Result;
Largest, Value: Integer;
begin
Second := Low(Second);
Largest := Low(Largest);
for Value in AVector do
if Value > Largest then
begin
Second := Largest;
Largest := Value;
end
else
if Value > Second then
Second := Value;
end;
begin
Write('Second Largest: ', SecondLargest([-1, -4, -3, -6, 10]));
end.
cHJvZ3JhbSBGb287Cgp7JE1PREUgT0JKRlBDfXskTE9OR1NUUklOR1MgT059CgogIGZ1bmN0aW9uIFNlY29uZExhcmdlc3QoY29uc3QgQVZlY3RvcjogYXJyYXkgb2YgSW50ZWdlcik6IEludGVnZXI7CiAgdmFyCiAgICBTZWNvbmQ6IEludGVnZXIgYWJzb2x1dGUgUmVzdWx0OwogICAgTGFyZ2VzdCwgVmFsdWU6IEludGVnZXI7CiAgYmVnaW4KICAgIFNlY29uZCA6PSBMb3coU2Vjb25kKTsKICAgIExhcmdlc3QgOj0gTG93KExhcmdlc3QpOwoKICAgIGZvciBWYWx1ZSBpbiBBVmVjdG9yIGRvCiAgICAgIGlmIFZhbHVlID4gTGFyZ2VzdCB0aGVuCiAgICAgIGJlZ2luCiAgICAgICAgU2Vjb25kIDo9IExhcmdlc3Q7CiAgICAgICAgTGFyZ2VzdCA6PSBWYWx1ZTsKICAgICAgZW5kCiAgICAgIGVsc2UKICAgICAgICBpZiBWYWx1ZSA+IFNlY29uZCB0aGVuCiAgICAgICAgICBTZWNvbmQgOj0gVmFsdWU7CiAgZW5kOwoKYmVnaW4KICBXcml0ZSgnU2Vjb25kIExhcmdlc3Q6ICcsIFNlY29uZExhcmdlc3QoWy0xLCAtNCwgLTMsIC02LCAxMF0pKTsKZW5kLg==