测评机: Xeost[5]
得分: 0分
提交日期: 2013-4-8 22:50:00
有效耗时: 该状态没有记录
测试结果1: 选手程序无输出
测试结果2: 选手程序无输出
测试结果3: 选手程序无输出
测试结果4: 选手程序无输出
测试结果5: 选手程序无输出
测试结果6: 选手程序无输出
测试结果7: 选手程序无输出
测试结果8: 选手程序无输出
测试结果9: 选手程序无输出
测试结果10: 选手程序无输出
var
i,n,num,m,k:longint;
dir:array[-1..1]of longint;{两头坐标,-1左边,1右边,0表示是哪一头}
a:array[-3000000..3000000]of string;
ans:array[0..1000000]of string;
st:string;
begin
assign(input,'t.in');assign(output,'t.out');
reset(input);rewrite(output);
readln(n,m,k);
for i:=1 to n do readln(a[n-i+1]);
dir[0]:=1;dir[-1]:=1;dir[1]:=n;{1是上面}
num:=0;
for i:=1 to m do
begin
readln(st);
if st='ROTATE'then dir[0]:=0-dir[0]{调换方向}
else
begin
inc(dir[dir[0]],dir[0]);{左边的扩充是-1,右边是+1,正好和dir的下标一致,统一用inc}
while st[length(st)]<>')'do delete(st,length(st),1);{防止每行右边有空格,删了后面用copy}
a[dir[dir[0]]]:=copy(st,5,length(st)-5);{截取名字}
if dir[1]-dir[-1]=k then{超过k张饼,因为每次只多一张 所以就用等于了}
begin
inc(num);
ans[num]:=a[dir[0-dir[0]]];{取出后放在ans这个栈里}
inc(dir[0-dir[0]],dir[0]);{删除,坐标改变即可 没必要真删 以后赋值就覆盖了}
end;
end;
end;
if dir[0]=1 then
for i:=dir[1]downto dir[-1]do writeln(a[i])
else
for i:=dir[-1]to dir[1]do writeln(a[i]);{必须分,因为to和downto不同}
for i:=num downto 1 do writeln(ans[i]);{取出的}
close(input);close(output);
end.