program mountain;
Uses Math;
const
MAXN = 100000;
var
ANS, N, i, j, maxMountainLength : LongInt;
P, leftLIS, rightLIS : Array[0..MAXN-1] of LongInt;
begin
{
uncomment the two following lines if you want to read/write from files
assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);
}
ReadLn(N);
for i:=0 to N-1 do
Read(P[i]);
ReadLn();
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*)
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
for j:= 0 to i-1 do
begin
if (P[i] > P[j]) then
leftLIS[i] := max(leftLIS[i], leftLIS[j] + 1);
end;
(* Calculate LIS from right to left (decreasing subsequence) for each position*)
for i := N - 2 downto 0 do
for j := i + 1 to N-1 do
if (P[i] > P[j]) then
rightLIS[i] := max(rightLIS[i], rightLIS[j] + 1);
(* Find the maximum length of mountain subsequence*)
maxMountainLength := 0;
for i := 0 to N-1 do
(*A valid mountain peak must have at least one element on both sides*)
(*leftLIS[i] > 1 ensures there's at least one element before peak*)
(*rightLIS[i] > 1 ensures there's at least one element after peak*)
if (leftLIS[i] >= 1) and (rightLIS[i] >= 1) then
(*Total mountain length with peak at i Subtract 1 because peak is counted in both leftLIS and rightLIS*)
maxMountainLength := max(maxMountainLength, leftLIS[i] + rightLIS[i] - 1);
(* Minimum removals = total elements - maximum mountain length*)
ANS:=N - maxMountainLength;
WriteLn(ANS);
end.
cHJvZ3JhbSBtb3VudGFpbjsKVXNlcyBNYXRoOwpjb25zdAogICAgTUFYTiA9IDEwMDAwMDsKCnZhcgogICAgQU5TLCBOLCBpLCBqLCBtYXhNb3VudGFpbkxlbmd0aCA6IExvbmdJbnQ7CiAgICBQLCBsZWZ0TElTLCByaWdodExJUyAgOiBBcnJheVswLi5NQVhOLTFdIG9mIExvbmdJbnQ7CiAgICAKYmVnaW4KewogICAgdW5jb21tZW50IHRoZSB0d28gZm9sbG93aW5nIGxpbmVzIGlmIHlvdSB3YW50IHRvIHJlYWQvd3JpdGUgZnJvbSBmaWxlcwogICAgYXNzaWduKGlucHV0LCAgJ2lucHV0LnR4dCcpOyAgcmVzZXQoaW5wdXQpOwogICAgYXNzaWduKG91dHB1dCwgJ291dHB1dC50eHQnKTsgcmV3cml0ZShvdXRwdXQpOwp9CgogICAgUmVhZExuKE4pOwoKICAgIGZvciBpOj0wIHRvIE4tMSBkbwogICAgICAgIFJlYWQoUFtpXSk7CiAgICBSZWFkTG4oKTsKCiAgICBBTlMgOj0gMDsKCigqbGVmdExJU1tpXSBzdG9yZXMgdGhlIGxlbmd0aCBvZiBsb25nZXN0IGluY3JlYXNpbmcgc3Vic2VxdWVuY2UgZW5kaW5nIGF0IGluZGV4IGkqKQooKnJpZ2h0TElTW2ldIHN0b3JlcyB0aGUgbGVuZ3RoIG9mIGxvbmdlc3QgZGVjcmVhc2luZyBzdWJzZXF1ZW5jZSBzdGFydGluZyBhdCBpbmRleCBpKikKCWZvciBpOj0wIHRvICBOLTEgZG8gYmVnaW4gbGVmdExJU1tpXTo9MTsgcmlnaHRMSVNbaV06PTE7IGVuZDsKKCpDYWxjdWxhdGUgTElTIGZyb20gbGVmdCB0byByaWdodCBmb3IgZWFjaCBwb3NpdGlvbiopCglmb3IgaSA6PSAxIHRvIE4tMSBkbwogICAgICAgZm9yIGo6PSAwIHRvIGktMSBkbwogICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgaWYgKFBbaV0gPiBQW2pdKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgbGVmdExJU1tpXSA6PSBtYXgobGVmdExJU1tpXSwgbGVmdExJU1tqXSArIDEpOwogICAgICAgICAgICAgICAgZW5kOyAgICAKKCogQ2FsY3VsYXRlIExJUyBmcm9tIHJpZ2h0IHRvIGxlZnQgKGRlY3JlYXNpbmcgc3Vic2VxdWVuY2UpIGZvciBlYWNoIHBvc2l0aW9uKikKCWZvciBpIDo9IE4gLSAyIGRvd250byAwIGRvCiAgICAgICAgICAgIGZvciAgaiA6PSBpICsgMSB0byBOLTEgZG8KICAgICAgICAgICAgICAgIGlmIChQW2ldID4gUFtqXSkgdGhlbgogICAgICAgICAgICAgICAgICAgIHJpZ2h0TElTW2ldIDo9IG1heChyaWdodExJU1tpXSwgcmlnaHRMSVNbal0gKyAxKTsKKCogRmluZCB0aGUgbWF4aW11bSBsZW5ndGggb2YgbW91bnRhaW4gc3Vic2VxdWVuY2UqKQoJbWF4TW91bnRhaW5MZW5ndGggOj0gMDsKCWZvciBpIDo9IDAgdG8gTi0xIGRvCigqQSB2YWxpZCBtb3VudGFpbiBwZWFrIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgZWxlbWVudCBvbiBib3RoIHNpZGVzKikKKCpsZWZ0TElTW2ldID4gMSBlbnN1cmVzIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIGVsZW1lbnQgYmVmb3JlIHBlYWsqKQooKnJpZ2h0TElTW2ldID4gMSBlbnN1cmVzIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIGVsZW1lbnQgYWZ0ZXIgcGVhayopCgkgICAgIGlmIChsZWZ0TElTW2ldID49IDEpIGFuZCAocmlnaHRMSVNbaV0gPj0gMSkgIHRoZW4KICgqVG90YWwgbW91bnRhaW4gbGVuZ3RoIHdpdGggcGVhayBhdCBpIFN1YnRyYWN0IDEgYmVjYXVzZSBwZWFrIGlzIGNvdW50ZWQgaW4gYm90aCBsZWZ0TElTIGFuZCByaWdodExJUyopCgkgICAgICAgbWF4TW91bnRhaW5MZW5ndGggOj0gbWF4KG1heE1vdW50YWluTGVuZ3RoLCBsZWZ0TElTW2ldICsgcmlnaHRMSVNbaV0gLSAxKTsKICgqIE1pbmltdW0gcmVtb3ZhbHMgPSB0b3RhbCBlbGVtZW50cyAtIG1heGltdW0gbW91bnRhaW4gbGVuZ3RoKikKCSAgICAgIEFOUzo9TiAtIG1heE1vdW50YWluTGVuZ3RoOwoJV3JpdGVMbihBTlMpOwplbmQuCg==