const vc=trunc(1e9);
var a,f,g,b,t,ds:array[0..100000] of longint;
resf,resg,n,k,i,max,res:longint;
procedure nhap;
var i:longint;
begin
read(n);
for i:=1 to n do readln(a[i]);
end;
function bsf(x,l,r:longint):longint;
var res,m:longint;
begin
res:=0;
while l<=r do
begin
m:=(l+r) div 2;
if (a[b[m]]>=x) then
begin
res:=m;
l:=m+1;
end
else r:=m-1;
end;
exit(res);
end;
procedure tim_f;
var i,j,jmax,z,d:longint;
begin
f[1]:=1;res:=1; b[1]:=1;
for i:=2 to n do
begin
k:=bsf(a[i],1,f[res]);
f[i]:=k+1;
t[i]:=b[k];
if f[res]<f[i] then res:=i;//max:=0;
b[f[i]]:=i;
end;
//writeln(f[res]);
resf:=f[res];
//truyvet(res);
end;
function bsg(x,l,r:longint):longint;
var res,m:longint;
begin
res:=0;
while l<=r do
begin
m:=(l+r) div 2;
if (a[b[m]]<=x) then
begin
res:=m;
l:=m+1;
end
else r:=m-1;
end;
exit(res);
end;
procedure tim_g;
var i,j,jmax,z,d:longint;
begin
g[1]:=1;res:=1; b[1]:=1;
for i:=2 to n do
begin
k:=bsg(a[i],1,g[res]);
g[i]:=k+1;
t[i]:=b[k];
if g[res]<g[i] then res:=i;//max:=0;
b[g[i]]:=i;
end;
//writeln(g[res]);d:=0;
resg:=g[res];
//truyvet(res);
end;
procedure solve;
begin
tim_f;
tim_g;
if resf<resg then
writeln(n-resg)
else
writeln(n-resf);
end;
begin
assign(input,'egroup.inp');reset(input);
assign(output,'egroup.out');rewrite(output);
nhap;
solve;
end.
* Chuyên dạy lập trình ONLINE cho học sinh THCS, THPT *.
Mọi giao lưu, trao đổi, xin liên hệ: Lê Quang Vinh - zalo: 037.803.8755.
Page: Lớp học Code Sky
Group FB1: Ôn thi HSG9 - THTB - TS10 chuyên tin
Group FB2: Học Scratch - Ôn thi Tin học trẻ bảng A
Thứ Ba, 3 tháng 5, 2022
EGROUP PASCAL
Đăng ký:
Đăng Nhận xét (Atom)
Không có nhận xét nào:
Đăng nhận xét
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.