Pagini recente » Cod sursa (job #2144188) | Cod sursa (job #2432975) | Cod sursa (job #2154173) | Cod sursa (job #161334) | Cod sursa (job #9642)
Cod sursa(job #9642)
Program secventa_5;
type adresa=^nod; nod=record inf:longint; adr:adresa; end;
var v:adresa;
f,g:text;
n,u,l,nr,dst,i,x:longint;
Function ad_nod_tst_dist(va:longint):boolean;
var a,b:adresa; OK:boolean;
begin
ok:=true;
if v=nil then
begin
new(a);
a^.adr:=nil;
a^.inf:=va;
v:=a;
end
else
begin
a:=v;
while a^.adr<>nil do
begin
if a^.inf=va then ok:=false;
a:=a^.adr;
end;
if a^.inf=va then ok:=false;
new(b);
a^.adr:=b;
b^.adr:=nil;
b^.inf:=va;
end;
ad_nod_tst_dist:=ok;
end;
Function distinct(va:longint):boolean;
var a:adresa; ok:boolean;
begin
ok:=true;
a:=v;
while a<>nil do
begin
if a^.inf=va then ok:=false;
a:=a^.adr;
end;
distinct:=ok;
end;
Function ad_to_nr:longint;
var a:adresa; dstmp,ad:longint;
begin
ad:=0;
dstmp:=dst;
a:=v;
while a<>nil do
begin
if distinct(a^.inf) then
dstmp:=dstmp-1;
if dstmp<l then break;
if (dstmp>=l) and (dstmp<=u) then begin
ad:=ad+1;
end;
a:=a^.adr;
end;
ad_to_nr:=ad;
end;
Procedure sterge_primul;
var a:adresa; z:longint;
begin
a:=v;
v:=a^.adr;
z:=a^.inf;
dispose(a);
if distinct(z) then
dst:=dst-1;
{nr:=nr+ad_to_nr;}
end;
begin
assign(f,'secv5.in'); reset(f);
assign(g,'secv5.out'); rewrite(g);
dst:=0; nr:=0;v:=nil;
readln(f, n, l,u);
for i:=1 to n do
begin
readln(f,x);
if ad_nod_tst_dist(x) then
dst:=dst+1;
if (dst>=l) and (dst<=u) then
begin nr:=nr+1; end;
nr:=nr+ad_to_nr;
if (dst>u) then sterge_primul
end;
writeln(g,nr);
close(f);
close(g);
end.