Cod sursa(job #346461)

Utilizator ionutz32Ilie Ionut ionutz32 Data 7 septembrie 2009 21:37:32
Problema Deque Scor 60
Compilator fpc Status done
Runda Arhiva educationala Marime 1.17 kb
type ref=^nod;
nod=record
    as,ad:ref;
    nr,poz:longint;
    end;
var bufin:array[1..65535] of byte;
v,u,sf,u2:ref;
n,k,i:longint;
x,s:int64;
f,g:text;
begin
assign(f,'deque.in');
assign(g,'deque.out');
reset(f);rewrite(g);
settextbuf(f,bufin);
readln(f,n,k);
for i:=1 to n do
    begin
    readln(f,x);
    if v=nil then
       begin
       new(v);
       v^.as:=nil;
       v^.ad:=nil;
       v^.nr:=x;
       v^.poz:=i;
       sf:=v;
       end
    else
        begin
        u:=sf;
        while (u<>nil) and (u^.nr>=x) do
              begin
              u2:=u^.as;
              dispose(u);
              u:=u2;
              end;
        u2:=u;
        new(u);
        u^.nr:=x;
        u^.as:=u2;
        u^.ad:=nil;
        u^.poz:=i;
        sf:=u;
        sf^.ad:=nil;
        if u2=nil then
           v:=u
        else
            u2^.ad:=u;
        end;
    if i>=k then
       begin
       while v^.poz<=i-k do
             begin
             u:=v^.ad;
             dispose(v);
             v:=u;
             v^.as:=nil;
             end;
       inc(s,v^.nr);
       end;
    end;
write(g,s);
close(f);close(g);
end.