Pagini recente » Cod sursa (job #1198309) | Cod sursa (job #802723) | Cod sursa (job #2772505) | Cod sursa (job #450423) | Cod sursa (job #287653)
Cod sursa(job #287653)
type elem=^nod ;
nod= record
x:longint;
next:elem;
end;
var p,d,cap,ultim,z,poin:elem;
ok:boolean;
i,n,k,a,sum:longint;
f,g:text;
begin
assign(f,'deque.in'); assign(g,'deque.out');
reset(f); rewrite(g);
readln(f,n,k); readln(f,a);
new(p);
p^.x:=a; p^.next:=nil;
cap:=p;
ultim:=p;
for i:=2 to k do begin
readln(f,a); ok:=true; poin:=cap;
while ok and (poin<>nil) do
if poin^.x<=a then begin ok:=false; new(z); z^.x:=a; z^.next:=poin;
cap:=z; end
else begin d:=poin; cap:=poin^.next; poin:=poin^.next;
dispose(d); end;
if poin=nil then begin new(z); z^.x:=a; z^.next:=poin;
cap:=z; ultim:=z; end;
end;
sum:=ultim^.x; poin:=cap;
if cap^.next=nil then begin d:=cap; cap:=poin^.next; dispose(d); end else
begin while poin^.next^.next<>nil do
poin:=poin^.next;
d:=ultim; ultim:=poin^.next; dispose(d); end;
for i:=k+1 to n do
begin
readln(f,a);
ok:=true; poin:=cap;
while ok and (poin<>nil) do
if poin^.x<=a then begin ok:=false; new(z); z^.x:=a; z^.next:=poin;
cap:=z; end
else begin d:=poin; cap:=poin^.next; poin:=poin^.next;
dispose(d); end;
if poin=nil then begin new(z); z^.x:=a; z^.next:=poin;
cap:=z; ultim:=z; end;
sum:=sum+ultim^.x;
poin:=cap;
if cap^.next=nil then begin d:=cap; cap:=poin^.next; dispose(d); end else
begin while poin^.next^.next<>nil do
poin:=poin^.next;
d:=ultim; ultim:=poin^.next; dispose(d); end;
end;
write(g,sum);
close(f); close(g);
end.