Pagini recente » Cod sursa (job #1397572) | Cod sursa (job #912231) | Cod sursa (job #1074522) | Cod sursa (job #731709) | Cod sursa (job #128065)
Cod sursa(job #128065)
program exer;
type c=array[1..5000] of longint;
var a,s,ss,b:c;
n,nn,cm:integer;
min:longint;
procedure load;
var i:integer;
f:text;
begin
assign(f,'secv.in');
reset(f);
readln(f,nn);
n:=nn;
for i:=1 to n do
begin
read(f,a[i]);
b[i]:=a[i];
end;
close(f);
end;
procedure minf(x:integer);
var i:integer;
begin
min:=b[x];
cm:=x;
for i:=x to n do
if min>b[i] then
begin
min:=b[i];
cm:=i;
end;
end;
procedure exc(x:integer);
var i:integer;
begin
for i:=x to n do b[i]:=b[i+1];
dec(n);
end;
procedure regen(var x,y:integer);
var i:integer;
begin
for i:=1 to x do ss[i]:=s[i];
y:=x;
x:=1;
for i:=1 to nn do b[i]:=a[i];
end;
procedure print(x:integer);
var f:text;
begin
assign(f,'secv.out');
rewrite(f);
write(f,x);
close(f);
end;
procedure solve;
var i,sk,ii,ssk:integer;
q:longint;
begin
sk:=1;
ssk:=0;
i:=1;
while ssk<nn-i do
begin
s[1]:=a[i];
q:=a[i];
ii:=i+1;
repeat
minf(ii);
if min>q then
begin
inc(sk);
s[sk]:=min;
q:=min;
exc(cm);
end
else exc(cm);
until n=1;
inc(i);
if ssk<sk then regen(sk,ssk);
n:=nn;
end;
print(i-1+ssk);
end;
begin
load;
solve;
end.