#train26csps002A. 林道清理

林道清理

林道清理

林道旁有 nn 棵树.第 ii 棵树的树根位于坐标 xix_i,向左倒会占据闭区间 [xi−Li,xi][x_i-L_i,x_i],向右倒会占据闭区间 [xi,xi+Ri][x_i,x_i+R_i].树也可以保持不动,此时只占据树根的位置 xix_i.

要清理尽可能多的树.每棵被清理的树须向左或向右倒,而且任何两棵树最终占据的路段不能有公共点;与保持不动的树也不能相碰.即使仅在端点接触,也是不合法的.道路两端没有边界.

请输出最多能清理多少棵树,以及最优方案中按树根坐标从小到大排列的字典序最小的决策串.其中 L 表示向左倒,R 表示向右倒,S 表示保持不动;比较字典序时规定 L<R<S.

输入格式

第一行输入一个整数 nn.

接下来 nn 行,每行三个整数 xi,Li,Rix_i,L_i,R_i.输入顺序不一定按坐标排序,但各 xix_i 互不相同.

输出格式

第一行输出最多能清理的树的数量.第二行输出长度为 nn 的决策串.

样例 1

4
4 1 1
1 1 1
5 1 1
2 1 1
3
LRSR

坐标排序后,四棵树分别位于 1,2,4,51,2,4,5.第一棵左倒,第二棵右倒,第三棵保持不动,第四棵右倒,最终清理三棵.第三棵不能左倒,因为其左端点 33 会与第二棵右倒后的右端点相碰.

更多样例

点击下载本题选手目录

  • Data/sample1.in 与 Data/sample1.ans:题面中的样例.
  • Data/sample2.in 与 Data/sample2.ans:n=12n=12,满足子任务 1.
  • Data/sample3.in 与 Data/sample3.ans:n=2×105n=2\times10^5,满足子任务 3.
  • Data/sample4.in 与 Data/sample4.ans:n=2×105n=2\times10^5,该样例无特殊限制.
  • Data/sample5.in 与 Data/sample5.ans:n=2000n=2000,满足子任务 2.
  • Data/sample6.in 与 Data/sample6.ans:n=1n=1,满足子任务 1.
  • Data/sample7.in 与 Data/sample7.ans:n=6n=6,满足子任务 1.
  • Data/sample8.in 与 Data/sample8.ans:n=2×105n=2\times10^5,该样例无特殊限制.

通过全部样例不代表程序正确,也不保证获得某个子任务的分数.

数据范围与子任务

所有输入均为整数,1≤n≤2×1051\le n\le2\times10^5,−109≤xi≤109-10^9\le x_i\le10^9,1≤Li,Ri≤1091\le L_i,R_i\le10^9.

特殊性质中,xi,Li,Rix_i,L_i,R_i 均指按树根坐标从小到大排序后的第 ii 棵树.各子任务独立计分,只有通过一个子任务的全部测试点才能获得该子任务的分值.

子任务 分值 额外限制
1 20 n≤12n\le12
2 15 n≤2000n\le2000
3 25 对所有 1≤i<n1\le i<n,xi+Ri≥xi+1x_i+R_i\ge x_{i+1}
4 40 无额外限制