Pagini recente » Cod sursa (job #2322345) | Cod sursa (job #1237206) | Cod sursa (job #3176966) | Cod sursa (job #4758) | Cod sursa (job #50894)
Cod sursa(job #50894)
program tribute_to_mars;
type pnod=^nod;
nod=record
inf,ind,cate:longint;
as,ad:pnod;
end;
var prim,ultim,nou,p,q:pnod;
f,g:text;
n,x,k,i,min,ps,pf,r:longint;
begin
assign(f,'secventa.in'); reset(f);
assign(g,'secventa.out'); rewrite(g);
read(f,n,k);
new(prim); new(ultim);
prim^.ad:=ultim;
ultim^.as:=prim;
read(f,x);
new(nou);
ultim^.inf:=x;
ultim^.ind:=1;
ultim^.cate:=0;
ultim^.ad:=nou;
nou^.as:=ultim;
ultim:=nou;
min:=-30000;
for i:=2 to n do begin
read(f,x);
if x>=ultim^.as^.inf then begin
new(nou);
ultim^.inf:=x;
ultim^.ind:=i;
ultim^.cate:=0;
ultim^.ad:=nou;
nou^.as:=ultim;
ultim:=nou;
end
else begin
p:=ultim^.as;
while (p<>prim) and (p^.inf>x) do begin
q:=p;
p:=p^.as;
p^.ad:=q^.ad;
q^.ad^.as:=p;
r:=i-q^.ind+q^.cate;
dispose(q);
end;
new(nou);
ultim^.inf:=x;
ultim^.ind:=i;
ultim^.cate:=r;
ultim^.ad:=nou;
nou^.as:=ultim;
ultim:=nou;
end;
{Sa fie in ultimele k}
p:=prim^.ad;
while (p<>ultim) and (i-p^.ind>k-1) do begin
q:=p;
p:=p^.ad;
q^.as^.ad:=p;
p^.as:=q^.as;
dispose(q);
end;
p:=prim^.ad;
if p^.inf>min then
if p^.cate+(i-p^.ind+1)>=k then begin
min:=p^.inf;
ps:=p^.ind-p^.cate;
pf:= ps+k-1;
end;
end;
writeln(g,ps,' ',pf,' ',min);
close(f); close(g);
end.