program mountain;
Uses sysutils, Math;
const
MAXN = 100005;
Type elenco= Array of LongInt;
var
ANS, N, i, h, id, x, maxMountainLength, lung, len, count : LongInt;
P, leftLIS, rightLIS, valli: Array[0..MAXN-1] of LongInt;
LIS : elenco;
rimossi : Ansistring;
Procedure ricercaUpper (var w:elenco; target:Longint); (*ritorna indice del valore maggiore/uguale a target oppure -1 se non esiste*)
var m,start,eend: Longint;
begin
start:=0; eend:=len-1 ; m:=-1;
while start<=eend do
begin
m:=(start + eend) div 2;
if w[m]<target then start:=m+1
else if w[m]>=target then begin id:=m; eend:=m-1 end;
end;
if start=len then id:=-1;
end;
begin
(*assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);*)
ReadLn(N);
rimossi:=''; lung:=N;
for i:=0 to N-1 do begin
Read(P[i]);
rimossi:=rimossi+IntTostr(P[i]);
valli[i]:=0;
end;
ReadLn();
count:=0;
i:=2; h:=1;
while h<10 do begin
count:=0;
while i<lung do
begin
if (rimossi[i]<rimossi[i-1]) and (rimossi[i]<rimossi[i+1])
then
begin
if (i+count)<lung then valli[i+count]:=-1;
delete(rimossi,i,1);
lung:=lung-1; count:=count+1;
setLength(rimossi,lung); i:=i+1;
end
else i:=i+1;
end;
h:=h+1;
end;
ANS := 0;
(*leftLIS[i] stores the length of longest increasing subsequence ending at index i*)
(*rightLIS[i] stores the length of longest decreasing subsequence starting at index i*)
len:=1; SetLength(LIS,len); LIS[0]:=P[0];
for i:=0 to N-1 do begin leftLIS[i]:=1; rightLIS[i]:=1; end;
(*Calculate LIS from left to right for each position*)
for i :=1 to N-1 do
begin
ricercaUpper(Lis, P[i]);
// if element in not present in lis insert at the end
if ((id=-1) and (valli[i]=0)) then
begin
len:=len+1;
SetLength(LIS,len);
LIS[len-1] := P[i];
leftLIS[i]:=len;
end
else
begin
// if element is to be inserted in lis
if ((id<>0) and (valli[id]=-1) and (valli[i]=0)) then
begin
LIS[id] := P[i];
leftLIS[i]:=id+1;
end
else
leftLIS[i]:=0;
end;
end;
(* Calculate LIS from right to left (decreasing subsequence) for each position*)
len:=1; SetLength(LIS,len); LIS[0]:=P[N-1];
for i :=N-2 downto 0 do
begin
ricercaUpper(Lis, P[i]);
if ((id=-1) and (valli[i]=0)) then
begin
len:=len+1;
SetLength(LIS,len);
LIS[len-1] := P[i];
rightLIS[i]:=len;
end
else
begin
// if element is to be inserted in lis
if ((id<>0) and (valli[N-1-id]=-1) and (valli[i]=0)) then
begin
LIS[id] := P[i];
rightLIS[i]:=id+1;
end
else
rightLIS[i]:=0;
end;
end;
maxMountainLength := 0;
(* Find the maximum length of mountain subsequence*)
// for every index check for longest mountain array,
for i := 0 to N-1 do
begin
if (leftLIS[i] >=1) AND (rightLIS[i] >= 1) then
begin
x := leftLIS[i] + rightLIS[i] - 1;
maxMountainLength := max(maxMountainLength, x);
end;
end;
// returning removals
ANS:= N - maxMountainLength;
WriteLn(ANS);
end.
cHJvZ3JhbSBtb3VudGFpbjsKVXNlcyBzeXN1dGlscywgTWF0aDsKCmNvbnN0CiAgICBNQVhOID0gMTAwMDA1OwogICAgClR5cGUgZWxlbmNvPSBBcnJheSBvZiBMb25nSW50OwoKdmFyCiAgICBBTlMsIE4sIGksIGgsIGlkLCB4LCBtYXhNb3VudGFpbkxlbmd0aCwgbHVuZywgbGVuLCBjb3VudCA6IExvbmdJbnQ7CiAgICBQLCBsZWZ0TElTLCByaWdodExJUywgdmFsbGk6IEFycmF5WzAuLk1BWE4tMV0gb2YgTG9uZ0ludDsKICAgIExJUyA6IGVsZW5jbzsKICAgIHJpbW9zc2kgOiBBbnNpc3RyaW5nOwogICAKICAgCgpQcm9jZWR1cmUgcmljZXJjYVVwcGVyICh2YXIgdzplbGVuY287IHRhcmdldDpMb25naW50KTsgKCpyaXRvcm5hIGluZGljZSBkZWwgdmFsb3JlIG1hZ2dpb3JlL3VndWFsZSBhIHRhcmdldCBvcHB1cmUgLTEgc2Ugbm9uIGVzaXN0ZSopCiAgdmFyIG0sc3RhcnQsZWVuZDogTG9uZ2ludDsKICAgICAgCiBiZWdpbiAgCiAgIHN0YXJ0Oj0wOyBlZW5kOj1sZW4tMSA7IG06PS0xOwogICB3aGlsZSBzdGFydDw9ZWVuZCBkbwogICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgIG06PShzdGFydCArIGVlbmQpIGRpdiAyOwogICAgICAgICAgICAgICAgICBpZiB3W21dPHRhcmdldCB0aGVuICBzdGFydDo9bSsxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgIGlmIHdbbV0+PXRhcmdldCB0aGVuICBiZWdpbiBpZDo9bTsgIGVlbmQ6PW0tMSBlbmQ7CiAgICAgICAgICAgZW5kOwogICBpZiBzdGFydD1sZW4gdGhlbiBpZDo9LTE7CiAgCiBlbmQ7CgoKCgpiZWdpbgogICAgKCphc3NpZ24oaW5wdXQsICAnaW5wdXQudHh0Jyk7ICByZXNldChpbnB1dCk7CiAgICBhc3NpZ24ob3V0cHV0LCAnb3V0cHV0LnR4dCcpOyByZXdyaXRlKG91dHB1dCk7KikgIAoKICAgIFJlYWRMbihOKTsKICAgIHJpbW9zc2k6PScnOyBsdW5nOj1OOyAgCiAgICBmb3IgaTo9MCB0byBOLTEgZG8gYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgUmVhZChQW2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmltb3NzaTo9cmltb3NzaStJbnRUb3N0cihQW2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsbGlbaV06PTA7IAogICAgICAgICAgICAgICAgICAgICAgIGVuZDsgIAogICAgUmVhZExuKCk7CiAgICAgY291bnQ6PTA7CiAgICAgaTo9MjsgaDo9MTsKICAgICB3aGlsZSBoPDEwIGRvIGJlZ2luCiAgICAgICBjb3VudDo9MDsKICAgICAgICB3aGlsZSBpPGx1bmcgZG8KICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgaWYgIChyaW1vc3NpW2ldPHJpbW9zc2lbaS0xXSkgYW5kIChyaW1vc3NpW2ldPHJpbW9zc2lbaSsxXSkgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpK2NvdW50KTxsdW5nIHRoZW4gdmFsbGlbaStjb3VudF06PS0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUocmltb3NzaSxpLDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsdW5nOj1sdW5nLTE7ICBjb3VudDo9Y291bnQrMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGVuZ3RoKHJpbW9zc2ksbHVuZyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6PWkrMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpOj1pKzE7CiAgICAgICAgICAgICAgZW5kOyAKICAgICAgICBoOj1oKzE7ICAgCiAgICAgZW5kOwogICAgQU5TIDo9IDA7IAoJKCpsZWZ0TElTW2ldIHN0b3JlcyB0aGUgbGVuZ3RoIG9mIGxvbmdlc3QgaW5jcmVhc2luZyBzdWJzZXF1ZW5jZSBlbmRpbmcgYXQgaW5kZXggaSopCgkoKnJpZ2h0TElTW2ldIHN0b3JlcyB0aGUgbGVuZ3RoIG9mIGxvbmdlc3QgZGVjcmVhc2luZyBzdWJzZXF1ZW5jZSBzdGFydGluZyBhdCBpbmRleCBpKikKICAgIGxlbjo9MTsgU2V0TGVuZ3RoKExJUyxsZW4pOyBMSVNbMF06PVBbMF07CiAgICBmb3IgaTo9MCB0byAgTi0xIGRvIGJlZ2luIGxlZnRMSVNbaV06PTE7IHJpZ2h0TElTW2ldOj0xOyBlbmQ7CiAgICAoKkNhbGN1bGF0ZSBMSVMgZnJvbSBsZWZ0IHRvIHJpZ2h0IGZvciBlYWNoIHBvc2l0aW9uKikKICAgIGZvciBpIDo9MSB0byBOLTEgZG8KICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICByaWNlcmNhVXBwZXIoTGlzLCBQW2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgZWxlbWVudCBpbiBub3QgcHJlc2VudCBpbiBsaXMgaW5zZXJ0IGF0IHRoZSBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaWQ9LTEpIGFuZCAodmFsbGlbaV09MCkpIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuOj1sZW4rMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldExlbmd0aChMSVMsbGVuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJU1tsZW4tMV0gOj0gUFtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRMSVNbaV06PWxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGVsZW1lbnQgaXMgdG8gYmUgaW5zZXJ0ZWQgaW4gbGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpZDw+MCkgYW5kICh2YWxsaVtpZF09LTEpIGFuZCAodmFsbGlbaV09MCkpICB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSVNbaWRdIDo9IFBbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdExJU1tpXTo9aWQrMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRMSVNbaV06PTA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgZW5kOyAKICAgCiAgICAgICAoKiBDYWxjdWxhdGUgTElTIGZyb20gcmlnaHQgdG8gbGVmdCAoZGVjcmVhc2luZyBzdWJzZXF1ZW5jZSkgZm9yIGVhY2ggcG9zaXRpb24qKQogICAgCiAgIGxlbjo9MTsgU2V0TGVuZ3RoKExJUyxsZW4pOyBMSVNbMF06PVBbTi0xXTsgCiAgIAogICBmb3IgaSA6PU4tMiAgZG93bnRvIDAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpY2VyY2FVcHBlcihMaXMsIFBbaV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaWQ9LTEpIGFuZCAodmFsbGlbaV09MCkpIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuOj1sZW4rMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldExlbmd0aChMSVMsbGVuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJU1tsZW4tMV0gOj0gUFtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0TElTW2ldOj1sZW47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBlbGVtZW50IGlzIHRvIGJlIGluc2VydGVkIGluIGxpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaWQ8PjApIGFuZCAodmFsbGlbTi0xLWlkXT0tMSkgIGFuZCAodmFsbGlbaV09MCkpICB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSVNbaWRdIDo9IFBbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRMSVNbaV06PWlkKzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0TElTW2ldOj0wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgIGVuZDsKICAgICAgICAgICAgICAgICAgICAKICAgIG1heE1vdW50YWluTGVuZ3RoIDo9IDA7CiAgICAoKiBGaW5kIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBtb3VudGFpbiBzdWJzZXF1ZW5jZSopCiAgICAvLyBmb3IgZXZlcnkgaW5kZXggY2hlY2sgZm9yIGxvbmdlc3QgbW91bnRhaW4gYXJyYXksCiAgICBmb3IgaSA6PSAwIHRvIE4tMSBkbwogICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgIGlmIChsZWZ0TElTW2ldID49MSkgQU5EIChyaWdodExJU1tpXSA+PSAxKSB0aGVuIAogICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgeCA6PSBsZWZ0TElTW2ldICsgcmlnaHRMSVNbaV0gLSAxOwogICAgICAgICAgICAgICAgICAgICAgICBtYXhNb3VudGFpbkxlbmd0aCA6PSBtYXgobWF4TW91bnRhaW5MZW5ndGgsIHgpOwogICAgICAgICAgICAgICAgICAgICAgZW5kOyAgCiAgICAgICAgICAgICBlbmQ7CiAgICAvLyByZXR1cm5pbmcgcmVtb3ZhbHMKICAgCiAgIEFOUzo9IE4gLSBtYXhNb3VudGFpbkxlbmd0aDsgCiAgIFdyaXRlTG4oQU5TKTsKZW5kLg==