Pagini recente » Cod sursa (job #1689702) | Cod sursa (job #533951) | Cod sursa (job #1349102) | Cod sursa (job #1000652) | Cod sursa (job #869119)
Cod sursa(job #869119)
type pnod=^nod;
nod=record
info:longint;
dr:pnod;
end;
var a:array[1..1000001] of PNOD;
c:byte;n,j:integer;d,i:longint; t:boolean;
f,g:text;
procedure adaugare(e:longint);
var d:pnod;
begin
new(d);
d^.dr:=a[i];
d^.info:=e;
a[i]:=d;
end;
function verificare(x:longint):boolean;
var r,k:pnod;ver:boolean;
begin
ver:=false;
If (a[i]=nil) then
begin
If c=1 then
Begin
new(a[i]);
a[i]^.info:=x;
a[i]^.dr:=nil;
ver:=true;
end;
end
else
begin
if a[i]^.dr<>nil then
Begin
r:=a[i];
while (r^.dr^.dr<>nil) and (r^.dr<>nil) do
{verifica dinainte daca urmatorul nod contine x pentru
a sarii peste el(sterge) in cazul c=2}
begin
if r^.dr^.info=x then
begin
ver:=true;
if c=2 then
begin
k:=r^.dr;
r^.dr:=r^.dr^.dr;
dispose(k);
end;
end;
r:=r^.dr;
end
end
else
begin
If c=2 then
If x=a[i]^.info then
dispose(a[i]);
If x=a[i]^.info then
ver:=true;
end;
end;
verificare:=ver;
end;
begin
assign(f,'hashuri.in');reset(f);
assign(g,'hashuri.out');rewrite(g);
readln(f,n);
for j:=1 to n do
begin
readln(f,c,d);
i:=(d mod 1000000)+1;
t:=verificare(d);
If (c=1) and (t=false) then
adaugare(d);
if c=3 then
begin
if t=true then
begin
writeln(g,'1');
end
else
begin
writeln(g,'0');
end
end;
end;
close(f);
close(g);
end.