CF1157C2.Increasing Subsequence (hard version)

普及+/提高

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

The only difference between problems C1 and C2 is that all values in input of problem C1 are distinct (this condition may be false for problem C2).

You are given a sequence aa consisting of nn integers.

You are making a sequence of moves. During each move you must take either the leftmost element of the sequence or the rightmost element of the sequence, write it down and remove it from the sequence. Your task is to write down a strictly increasing sequence, and among all such sequences you should take the longest (the length of the sequence is the number of elements in it).

For example, for the sequence [1,2,4,3,2][1, 2, 4, 3, 2] the answer is 44 (you take 11 and the sequence becomes [2,4,3,2][2, 4, 3, 2], then you take the rightmost element 22 and the sequence becomes [2,4,3][2, 4, 3], then you take 33 and the sequence becomes [2,4][2, 4] and then you take 44 and the sequence becomes [2][2], the obtained increasing sequence is [1,2,3,4][1, 2, 3, 4]).

问题 C1 与 C2 的唯一区别在于:C1 输入中的所有数值互不相同(而该条件在 C2 中可能不成立)。

给定一个由 nn 个整数组成的序列 aa。

你需要进行若干次操作。每次操作中,你必须从序列的最左端或最右端取出一个元素,将其记录下来,并从序列中删除它。你的目标是记录下一个严格递增的序列;在所有满足该条件的序列中,你应选择最长的一个(序列的长度即为其所含元素的个数)。

例如,对于序列 [1,2,4,3,2][1, 2, 4, 3, 2],答案为 44(首先取最左端的 11,序列变为 [2,4,3,2][2, 4, 3, 2];接着取最右端的 22,序列变为 [2,4,3][2, 4, 3];然后取 33,序列变为 [2,4][2, 4];最后取 44,序列变为 [2][2];最终得到的严格递增序列为 [1,2,3,4][1, 2, 3, 4])。

输入格式

The first line of the input contains one integer nn (1≤n≤2⋅1051 \le n \le 2 \cdot 10^5) — the number of elements in aa.

The second line of the input contains nn integers a1,a2,…,ana_1, a_2, \dots, a_n (1≤ai≤2⋅1051 \le a_i \le 2 \cdot 10^5), where aia_i is the ii-th element of aa.

输入的第一行包含一个整数 nn(1≤n≤2⋅1051 \le n \le 2 \cdot 10^5)—— 表示数组 aa 的元素个数。

输入的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(1≤ai≤2⋅1051 \le a_i \le 2 \cdot 10^5),其中 aia_i 是数组 aa 的第 ii 个元素。

输出格式

In the first line of the output print kk — the maximum number of elements in a strictly increasing sequence you can obtain.

In the second line print a string ss of length kk, where the jj-th character of this string sjs_j should be 'L' if you take the leftmost element during the jj-th move and 'R' otherwise. If there are multiple answers, you can print any.

在输出的第一行打印 kk —— 你能得到的严格递增序列的最大元素个数。

在第二行打印一个长度为 kk 的字符串 ss,其中该字符串的第 jj 个字符 sjs_j 在第 jj 次操作中取最左端元素时应为 'L',否则为 'R'。若存在多个答案,输出任意一个即可。

输入输出样例

  • 输入#1

    5
    1 2 4 3 2

    输出#1

    4
    LRRR
  • 输入#2

    7
    1 3 5 6 5 4 2

    输出#2

    6
    LRLRRR
  • 输入#3

    3
    2 2 2

    输出#3

    1
    R
  • 输入#4

    4
    1 2 4 3

    输出#4

    4
    LLRR

说明/提示

The first example is described in the problem statement.

第一个示例在题目描述中已给出。

输入解题思路,AI测评打分。不知道怎么写?

首页