// <=4: 不翻页 0123 光标位置变化,视窗不变 // >4: 四种特殊情况 // 列表第一首往前跳到最后一首,视窗移动; // 视窗第一首往前,位置往前一步,视窗移动 // 视窗最后一首往后,位置往后一步,视窗移动; // 列表最后一首往后跳到第一首,视窗移动 // 其余情况,位置变化,视窗不变 // start end 保存视窗头尾指针 let n = Number(readline()), action = readline().split('') let music = [0], win = [], p = 1, start = 1, end = 4 for(let i=1; i<=n; i++) { music[i] = i } fn(action) print(win.join(' ')) print(p) function fn(action) { if(music.length<=5) { // 还有一个头部的0 win = music.slice(1) action.forEach(a => { if(a=='U') { if(p==1)p=n else p-- } else { if(p==n)p=1 else p++ } }) } else { action.forEach(a => { if(a=='U') { if(p==1) { // 列表第一首往前跳到最后一首,视窗移动; p=n end = n start = n-3 } else if(p==start) { // 视窗第一首往前,位置往前一步,视窗移动 p-- start = p end-- } else { p-- } } else { if(p==n) { // 列表最后一首往后跳到第一首,视窗移动 p=1 start = 1 end = 4 } else if(p==end) { // 视窗最后一首往后,位置往后一步,视窗移动; p++ end = p start++ } else { p++ } } }) win = music.slice(start, end+1) } }