Day 1 T1
题目大意
一些naive的玩具小人把小南的眼镜藏起来,但小南有一份too simple的小纸条,告诉小南眼镜在第一个小人往哪数第几个的往哪数的第几个的往哪数第几个的往哪数的第几个的往哪数第几个的往哪数的第几个......那里,但是他们又不too young,有的职业是mengbier的小人朝内,有的职业是mogician的小人朝外,这意味着它们的左右方向是相反的,于是小南为了不让生命-1s,就来找了你来帮他+1s、+2s、+3s......
输入样例
7 3
0 singer 0 reader 0 mengbier 1 thinker 1 archer 0 writer 1 mogician 0 3 1 1 0 2
输出样例
神奇的代码
writer
数据范围
1<=n,m<=10^5
第一天的大水题,小人两个方向0(朝内) 1(朝外),数小人的两个方向0(向左数) 1(向右数),也就四个if语句判断往哪边数,超过n或小于1的就膜一膜或者+n或-n就可以了
只是有一点的细节 Pascal选手输入职业时可能会有一开始的空格读入要处理,c++选手不是cin读入的会读入空格也是药丸的2333
1 type rec=record 2 pos:longint; 3 job:string; 4 end; 5 var 6 f:array[0..100009] of rec; 7 n,m,i,j,x,y,a,b:longint; 8 begin 9 a:=1; 10 readln(n,m); 11 for i:=1 to n do 12 readln(f[i].pos,f[i].job); 13 for i:=1 to m do 14 begin 15 readln(x,y); 16 if f[a].pos=0 then begin 17 case x of 18 0:begin if a-y<=0 then a:=n+a-y else a:=a-y; end; 19 1:begin if a+y>n then a:=a+y-n else a:=a+y; end; 20 end; 21 end 22 else begin 23 case x of 24 1:begin if a-y<=0 then a:=n+a-y else a:=a-y; end; 25 0:begin if a+y>n then a:=a+y-n else a:=a+y; end; 26 end; 27 end; 28 end; 29 delete(f[a].job,1,1); 30 writeln(f[a].job); 31 end.