T^T为了给FJUTACM集训队做点贡献,T^T就用web技术给集训队开发了一个OJ系统。但是T^T是非常懒的,爱动脑却不爱动手,所以T^T就想让集训队的队员们帮忙干点苦力活。。
任务一:
这个问题非常简单,在OJ系统中随处可见的翻页功能,如图
假定总共有n页,当前页是x,所有页码的范围是1~n。
页面是由一些按钮构成的,按钮有3种状态:
1、可点击:按钮是可以点击的,有一个属性是超链接,表示要跳转的地址。用数字1表示
2、不可点击:按钮不可点击。用数字2表示
3、当前页:按钮可以点击,显示为蓝色,超链接属性是当前页的地址。用数字3表示
页码必须满足如下要求:
1、第一个按钮是“首页”,第二个按钮是“上一页”,最后一个按钮是“尾页”,倒数第二个按钮是“下一页”。
如果当前页是首页,则“首页”、“上一页”的状态是“不可点击”,否则可点击,且跳转到相应页。
如果当前页是尾页,则“尾页”、“下一页”的状态是“不可点击”,否则可点击,切跳转到相应页。
2、中间部分是若干直接跳转页面按钮,若总页数不超过5页,则显示全部页;超过5页则显示5页。
其中当前页按钮的状态是“当前页”。
其他页面按钮是最接近当前页的4个按钮,升序排序。
3、若中间显示的直接跳转页面按钮不包括首页,则在“上一页”按钮和第一个直接跳转页面按钮之间有一个状态是“不可点击”的省略号按钮。
最后一个直接跳转页面按钮和“下一页”之间同理
输入多组数据,每组数据包括2个整数n,k。分别表示总页数和当前页。(1<=n<=10000,1<=k<=n)
每组样例输出若干行,第一行先输出一个“Case #x:”。其中x表示测试样例的组数。
接下来多行,每行表示一个按钮。
每个按钮用 ["text",status,"link"]形式表示。
其中text表示按钮上面的文字,文字可能是“<<”(首页),“<”(上一页),“...”(省略),“>”(下一页),“>>”(尾页),和表示页码的数字。
status表示这个按钮的状态,为1、2、3中的任意一种。
link表示这个按钮的超链接。若状态为2时,link为空,否则link是“page=x”的形式,x表示点击这个按钮后应该跳转到的页码。
10 1 10 5 1 1
Case #1: ["<<",2,""] ["<",2,""] ["1",3,"page=1"] ["2",1,"page=2"] ["3",1,"page=3"] ["4",1,"page=4"] ["5",1,"page=5"] ["...",2,""] [">",1,"page=2"] [">>",1,"page=10"] Case #2: ["<<",1,"page=1"] ["<",1,"page=4"] ["...",2,""] ["3",1,"page=3"] ["4",1,"page=4"] ["5",3,"page=5"] ["6",1,"page=6"] ["7",1,"page=7"] ["...",2,""] [">",1,"page=6"] [">>",1,"page=10"] Case #3: ["<<",2,""] ["<",2,""] ["1",3,"page=1"] [">",2,""] [">>",2,""]