讨论 / 为何无输出??烙烧饼...
quanyuxuan 2013-04-08 08:04:00
点我顶贴 收藏 删除
状态: Unaccepted

测评机: 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.

查看更多回复
提交回复