program mountain;
Uses sysutils, Math;
const
MAXN = 100005;
Type elenco= Array of LongInt;
var
ANS, N, i, j,id,x, maxMountainLength, lung, len, ricordamaxmount : LongInt;
P, leftLIS, rightLIS : Array[0..MAXN-1] of LongInt;
LIS : elenco;
rimossi : Ansistring;
uscita : boolean;
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]);
end;
ReadLn();
uscita:=false; ricordamaxmount:=0;
while uscita=false do
begin
j:=2; uscita:=true;
while j<lung do
begin
if (rimossi[j]<rimossi[j-1]) and (rimossi[j]<rimossi[j+1])
then
begin
delete(rimossi,j,1);
lung:=lung-1;
setLength(rimossi,lung);
uscita:=false;
end;
for i:=1 to lung do P[i-1]:=StrToInt(rimossi[i]);
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 lung-1 do begin leftLIS[i]:=1; rightLIS[i]:=1; end;
(*Calculate LIS from left to right for each position*)
for i :=1 to lung-1 do
begin
ricercaUpper(Lis, P[i]);
// if element is to be inserted in lis
if (id <>-1) and (id<>0) then
begin
LIS[id] := P[i];
leftLIS[i]:=id+1;
end
// if element in not present in lis insert at the end
else
if id=-1 then
begin
len:=len+1;
SetLength(LIS,len);
LIS[len-1] := P[i];
leftLIS[i]:=len;
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 :=lung-2 downto 0 do
begin
ricercaUpper(Lis, P[i]);
// if element is to be inserted in lis
if (id <>-1) and (id<>0) then
begin
LIS[id] := P[i];
rightLIS[i]:=id+1;
end
// if element in not present in lis insert at the end
else
if id=-1 then
begin
len:=len+1;
SetLength(LIS,len);
LIS[len-1] := P[i];
rightLIS[i]:=len;
end;
end;
maxMountainLength := 0;
(* Find the maximum length of mountain subsequence*)
// for every index check for longest mountain array,
for i := 0 to lung-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
if maxMountainLength>ricordamaxmount then ricordamaxmount:=maxMountainLength;
j:=j+1;
end;
end;
ANS:= N - ricordamaxmount;
WriteLn(ANS);
end.
cHJvZ3JhbSBtb3VudGFpbjsKVXNlcyBzeXN1dGlscywgTWF0aDsKCmNvbnN0CiAgICBNQVhOID0gMTAwMDA1OwpUeXBlIGVsZW5jbz0gQXJyYXkgb2YgTG9uZ0ludDsKdmFyCiAgICBBTlMsIE4sIGksIGosaWQseCwgbWF4TW91bnRhaW5MZW5ndGgsIGx1bmcsIGxlbiwgcmljb3JkYW1heG1vdW50IDogTG9uZ0ludDsKICAgIFAsIGxlZnRMSVMsIHJpZ2h0TElTIDogQXJyYXlbMC4uTUFYTi0xXSBvZiBMb25nSW50OwogICAgTElTIDogZWxlbmNvOwogICAgcmltb3NzaSA6IEFuc2lzdHJpbmc7CiAgICB1c2NpdGEgOiBib29sZWFuOwogICAKClByb2NlZHVyZSByaWNlcmNhVXBwZXIgKHZhciB3OmVsZW5jbzsgdGFyZ2V0OkxvbmdpbnQpOyAoKnJpdG9ybmEgaW5kaWNlIGRlbCB2YWxvcmUgbWFnZ2lvcmUvdWd1YWxlIGEgdGFyZ2V0IG9wcHVyZSAtMSBzZSBub24gZXNpc3RlKikKICB2YXIgbSxzdGFydCxlZW5kOiBMb25naW50OwogICAgICAKIGJlZ2luICAKICAgc3RhcnQ6PTA7IGVlbmQ6PWxlbi0xIDsgbTo9LTE7CiAgIHdoaWxlIHN0YXJ0PD1lZW5kIGRvCiAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgbTo9KHN0YXJ0ICsgZWVuZCkgZGl2IDI7CiAgICAgICAgICAgICAgICAgIGlmIHdbbV08dGFyZ2V0IHRoZW4gIHN0YXJ0Oj1tKzEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAgaWYgd1ttXT49dGFyZ2V0IHRoZW4gIGJlZ2luIGlkOj1tOyAgZWVuZDo9bS0xIGVuZDsKICAgICAgICAgICBlbmQ7CiAgIGlmIHN0YXJ0PWxlbiB0aGVuIGlkOj0tMTsKICAKIGVuZDsKCgoKCmJlZ2luCiAgICAoKmFzc2lnbihpbnB1dCwgICdpbnB1dC50eHQnKTsgIHJlc2V0KGlucHV0KTsKICAgIGFzc2lnbihvdXRwdXQsICdvdXRwdXQudHh0Jyk7IHJld3JpdGUob3V0cHV0KTsqKSAgCgogICAgUmVhZExuKE4pOwogICAgcmltb3NzaTo9Jyc7IGx1bmc6PU47IAogICAgZm9yIGk6PTAgdG8gTi0xIGRvIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWQoUFtpXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJpbW9zc2k6PXJpbW9zc2krSW50VG9zdHIoUFtpXSk7CiAgICAgICAgICAgICAgICAgICAgICAgZW5kOyAgCiAgICBSZWFkTG4oKTsKICAgCiAgICB1c2NpdGE6PWZhbHNlOyByaWNvcmRhbWF4bW91bnQ6PTA7CiAgICB3aGlsZSB1c2NpdGE9ZmFsc2UgZG8gCiAgICAgICBiZWdpbgogICAgICAgIGo6PTI7IHVzY2l0YTo9dHJ1ZTsKICAgICAgICB3aGlsZSBqPGx1bmcgZG8KICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgaWYgIChyaW1vc3NpW2pdPHJpbW9zc2lbai0xXSkgYW5kIChyaW1vc3NpW2pdPHJpbW9zc2lbaisxXSkgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZShyaW1vc3NpLGosMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx1bmc6PWx1bmctMTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExlbmd0aChyaW1vc3NpLGx1bmcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2NpdGE6PWZhbHNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsKICAgICAgICAgICAgICAgIGZvciBpOj0xIHRvIGx1bmcgIGRvIFBbaS0xXTo9U3RyVG9JbnQocmltb3NzaVtpXSk7CiAgICAgICAgICAgICAgICBBTlMgOj0gMDsgCgkJCQkoKmxlZnRMSVNbaV0gc3RvcmVzIHRoZSBsZW5ndGggb2YgbG9uZ2VzdCBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlIGVuZGluZyBhdCBpbmRleCBpKikKCQkJCSgqcmlnaHRMSVNbaV0gc3RvcmVzIHRoZSBsZW5ndGggb2YgbG9uZ2VzdCBkZWNyZWFzaW5nIHN1YnNlcXVlbmNlIHN0YXJ0aW5nIGF0IGluZGV4IGkqKQogICAgCQkJbGVuOj0xOyBTZXRMZW5ndGgoTElTLGxlbik7IExJU1swXTo9UFswXTsKCQkJCSBmb3IgaTo9MCB0byAgbHVuZy0xIGRvIGJlZ2luIGxlZnRMSVNbaV06PTE7IHJpZ2h0TElTW2ldOj0xOyBlbmQ7CgkJCQkgKCpDYWxjdWxhdGUgTElTIGZyb20gbGVmdCB0byByaWdodCBmb3IgZWFjaCBwb3NpdGlvbiopCgkJCQkgZm9yIGkgOj0xIHRvIGx1bmctMSBkbwogICAgICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgIHJpY2VyY2FVcHBlcihMaXMsIFBbaV0pOwogICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGVsZW1lbnQgaXMgdG8gYmUgaW5zZXJ0ZWQgaW4gbGlzCiAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkIDw+LTEpIGFuZCAoaWQ8PjApICB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJU1tpZF0gOj0gUFtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRMSVNbaV06PWlkKzE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kIAogICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGVsZW1lbnQgaW4gbm90IHByZXNlbnQgaW4gbGlzIGluc2VydCBhdCB0aGUgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpZD0tMSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkgbGVuOj1sZW4rMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkgU2V0TGVuZ3RoKExJUyxsZW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkgTElTW2xlbi0xXSA6PSBQW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkgbGVmdExJU1tpXTo9bGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsgCiAgICAgICAgICAgICAgICAgICAgZW5kOyAKICAgICAgICAgICAgICAgICAgICAKICAgIAkJCQkgKCogQ2FsY3VsYXRlIExJUyBmcm9tIHJpZ2h0IHRvIGxlZnQgKGRlY3JlYXNpbmcgc3Vic2VxdWVuY2UpIGZvciBlYWNoIHBvc2l0aW9uKikKICAgIAoJCQlsZW46PTE7IFNldExlbmd0aChMSVMsbGVuKTsgTElTWzBdOj1QW04tMV07IAoJCQlmb3IgaSA6PWx1bmctMiAgZG93bnRvIDAgZG8KICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICByaWNlcmNhVXBwZXIoTGlzLCBQW2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgZWxlbWVudCBpcyB0byBiZSBpbnNlcnRlZCBpbiBsaXMKICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWQgPD4tMSkgYW5kIChpZDw+MCkgIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElTW2lkXSA6PSBQW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRMSVNbaV06PWlkKzE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kIAogICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGVsZW1lbnQgaW4gbm90IHByZXNlbnQgaW4gbGlzIGluc2VydCBhdCB0aGUgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpZD0tMSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuOj1sZW4rMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0TGVuZ3RoKExJUyxsZW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSVNbbGVuLTFdIDo9IFBbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0TElTW2ldOj1sZW47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOyAKICAgICAgICAgICAgICAgICAgICBlbmQ7CiAgICAgICAgICAgICAgICAgIAogICAgCQkJbWF4TW91bnRhaW5MZW5ndGggOj0gMDsKICAgIAkJKCogRmluZCB0aGUgbWF4aW11bSBsZW5ndGggb2YgbW91bnRhaW4gc3Vic2VxdWVuY2UqKQogICAgCQkvLyBmb3IgZXZlcnkgaW5kZXggY2hlY2sgZm9yIGxvbmdlc3QgbW91bnRhaW4gYXJyYXksCiAgICAJCQlmb3IgaSA6PSAwIHRvIGx1bmctMSBkbwogICAgICAgICAgICAJCSBiZWdpbgogICAgICAgICAgICAJCSAgIGlmIChsZWZ0TElTW2ldID49MSkgQU5EIChyaWdodExJU1tpXSA+PSAxKSB0aGVuIAogICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgIHggOj0gbGVmdExJU1tpXSArIHJpZ2h0TElTW2ldIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhNb3VudGFpbkxlbmd0aCA6PSBtYXgobWF4TW91bnRhaW5MZW5ndGgsIHgpOwogICAgICAgICAgICAgICAgICAgICAgICBlbmQ7ICAKICAgICAgICAgICAgCQkgZW5kOwoJCQkJIC8vIHJldHVybmluZyByZW1vdmFscwogICAgICAgICAgICAgICAgICAgIGlmIG1heE1vdW50YWluTGVuZ3RoPnJpY29yZGFtYXhtb3VudCB0aGVuIHJpY29yZGFtYXhtb3VudDo9bWF4TW91bnRhaW5MZW5ndGg7CgkJCQkgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGo6PWorMTsKICAgICAgICAgICAgICBlbmQ7ICAgICAgICAgICAgICAKICAgICAgIGVuZDsgICAgIAogICAgIAogIAogICBBTlM6PSBOIC0gcmljb3JkYW1heG1vdW50OyAgCiAgIFdyaXRlTG4oQU5TKTsKZW5kLg==