題目描述
乙個學校裡老師要將班上n個同學排成一列,同學被編號為1~n,他採取如下的方法:
1.先將1號同學安排進佇列,這時佇列中只有他乙個人;
2.2~n號同學依次入列,編號為i的同學入列方式為:老師指定編號為i的同學站在編號為1~i -1中某位同學(即之前已經入列的同學)的左邊或右邊;
3.從佇列中去掉m(m
type node=record
id,pre,suc:longint;
end;
var a:array[0..100001]of node;
v:array[0..100001]of longint;
n,m,h,t,i,x,z:longint;
begin
readln(n);
a[1].id:=1;
a[1].pre:=0;h:=1;
a[1].suc:=0;t:=1;
for i:=2
to n do
begin
readln(x,z);
a[i].id:=i;
case z of
0:begin
if a[x].pre=0
then
begin
a[i].pre:=0;
a[i].suc:=a[x].id;
a[x].pre:=a[i].id;
h:=i;
endelse
begin
a[i].pre:=a[a[x].pre].id;
a[a[x].pre].suc:=a[i].id;
a[i].suc:=a[x].id;
a[x].pre:=a[i].id;
end;
end;
1:begin
if a[x].suc=0
then
begin
a[i].suc:=0;
a[i].pre:=a[x].id;
a[x].suc:=a[i].id;
endelse
begin
a[i].suc:=a[a[x].suc].id;
a[a[x].suc].pre:=a[i].id;
a[i].pre:=a[x].id;
a[x].suc:=a[i].id;
end;
end;
end;
end;t:=h;z:=0;
while t<>0
dobegin
inc(z);
v[t]:=z;
t:=a[t].suc;
end;
readln(m);
for i:=1
to m do
begin
readln(x);
if v[x]=0
then
continue;
if a[x].pre=0
then
begin a[a[x].suc].pre:=0;h:=a[x].suc;end
else
if a[x].suc=0
then
a[a[x].pre].suc:=0
else
begin a[a[x].pre].suc:=a[x].suc;
a[a[x].suc].pre:=a[x].pre;end;
v[x]:=0;
end;t:=h;
while t<>0
dobegin
write(t,' ');
t:=a[t].suc;
end;
end.
洛谷P1160 佇列安排
乙個學校裡老師要將班上n個同學排成一列,同學被編號為1 n,他採取如下的方法 1.先將1號同學安排進佇列,這時佇列中只有他乙個人 2.2 n號同學依次入列,編號為i的同學入列方式為 老師指定編號為i的同學站在編號為1 i 1中某位同學 即之前已經入列的同學 的左邊或右邊 3.從佇列中去掉m m在所有...
洛谷P1160 佇列安排
乙個學校裡老師要將班上nn個同學排成一列,同學被編號為1 sim n1 n,他採取如下的方法 先將11號同學安排進佇列,這時佇列中只有他乙個人 2 n2 n號同學依次入列,編號為i的同學入列方式為 老師指定編號為i的同學站在編號為1 sim i 1 1 i 1 中某位同學 即之前已經入列的同學 的左...
洛谷 P1160 佇列安排
題目描述 乙個學校裡老師要將班上nn個同學排成一列,同學被編號為1 sim n1 n,他採取如下的方法 先將11號同學安排進佇列,這時佇列中只有他乙個人 2 n2 n號同學依次入列,編號為i的同學入列方式為 老師指定編號為i的同學站在編號為1 sim i 1 1 i 1 中某位同學 即之前已經入列的...