Pagini recente » Cod sursa (job #9495) | Cod sursa (job #2452267) | Cod sursa (job #2261871) | Cod sursa (job #317049) | Cod sursa (job #408705)
Cod sursa(job #408705)
const tfi='hashuri.in';
tfo='hashuri.out';
maxn=1000001;
type li=record u,v:longint;
end;
var fi,fo:text;
n:longint;
ds:array[0..maxn] of li;
dd,t,vt:array[0..maxn] of longint;
procedure enter;
var i:longint;
begin
read(fi,n);
for i:=1 to n do
with ds[i] do read(fi,u,v);
for i:=1 to n do vt[i]:=i;
end;
procedure swap(var u,v:longint);
var tg:longint;
begin
tg:=u; u:=v; v:=tg;
end;
procedure sort(l,r:longint);
var mid,i,j:longint;
begin
if l>=r then exit;
i:=l; j:=r;
mid:=ds[(l+r) div 2].v;
repeat
while ds[i].v<mid do inc(i);
while ds[j].v>mid do dec(j);
if i<=j then
begin
swap(vt[i],vt[j]);
swap(ds[i].v,ds[j].v);
inc(i);
dec(j);
end;
until i>j;
sort(i,r);
sort(l,j);
end;
procedure process;
var x,u,v,cnt,i,J:longint;
begin
sort(1,N);
i:=1; cnt:=0;
while i<=n do
begin
j:=i;
x:=ds[i].v;
inc(cnt);
while (j<=n) and (ds[j].v=x) do
begin
t[vt[j]]:=cnt;
inc(j);
end;
i:=j;
end;
for i:=1 to n do ds[i].v:=t[i];
end;
procedure tinh;
var i,j:longint;
begin
for i:=1 to n do
with ds[i] do
begin
if u=1 then dd[v]:=1
else
if u=2 then dd[v]:=0
else writeln(fo,dd[v]);
end;
end;
begin
assign(fi,tfi); reset(fi);
assign(fo,tfo); rewrite(fo);
enter;
process;
tinh;
close(fi); close(fo);
end.