Pagini recente » Cod sursa (job #1448495) | Cod sursa (job #407487) | Cod sursa (job #1056872) | Cod sursa (job #1354052) | Cod sursa (job #25638)
Cod sursa(job #25638)
var fi,fo:text;
a,t,v:array[1..5000] of longint;
n,i,k,p:integer;
procedure solve;
var min,i,j,minv,int,mina,minin:longint;
vl,cj,ct:integer;
begin
for i:=n downto 1 do
if (v[i]>minv) and (i<n-4) then
begin
a[i]:=1;
t[i]:=i;
end
else
begin
minv:=v[i+1];
mina:=a[i+1];
cj:=i+1;
ct:=1;
for j:=i+2 to n do
begin
if v[j]<minv then
begin
minv:=v[j];
mina:=a[j];
cj:=j;
ct:=1;
end
else
if v[j]=minv then
begin
mina:=a[j];
inc(ct);
end;
end;
if minv>=v[i] then
begin
a[i]:=mina+ct;
t[i]:=cj;
end
else
begin
a[i]:=1;
t[i]:=i;
end;
end;
{ for i:=1 to n do
write(fo,t[i],' ');
writeln(fo);
for i:=1 to n do
write(fo,a[i],' ');
writeln(fo); }
min:=v[1];
minin:=1;
for i:=2 to n do
if v[i]<min then
begin
min:=v[i];
minin:=i;
end;
writeln(fo,a[minin]);
write(fo,minin,' ');
vl:=t[minin];
i:=t[minin];
ct:=2;
while ct<=a[minin] do
begin
write(fo,vl,' ');
vl:=t[vl];
i:=t[i];
inc(ct);
end;
// write(fo,vl);
end;
begin
assign(fi,'subsir2.in'); reset(fi);
assign(fo,'subsir2.out'); rewrite(fo);
readln(fi,n);
for i:=1 to n do
read(fi,v[i]);
solve;
close(fi);
close(fo);
end.