天天看點

B. New Year Present----構造

B. New Year Present time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output

The New Year is coming! That's why many people today are busy preparing New Year presents. Vasily the Programmer is no exception.

Vasily knows that the best present is (no, it's not a contest) money. He's put n empty wallets from left to right in a row and decided how much money to put in what wallet. Vasily decided to put ai coins to the i-th wallet from the left.

Vasily is a very busy man, so the money are sorted into the bags by his robot. Initially, the robot stands by the leftmost wallet in the row. The robot can follow instructions of three types: go to the wallet that is to the left of the current one (if such wallet exists), go to the wallet that is to the right of the current one (if such wallet exists), put a coin to the current wallet. Due to some technical malfunctions the robot cannot follow two "put a coin" instructions in a row.

Vasily doesn't want to wait for long, so he wants to write a program for the robot that contains at most 106 operations (not necessarily minimum in length) the robot can use to put coins into the wallets. Help him.

Input

The first line contains integer n (2 ≤ n ≤ 300) — the number of wallets. The next line contains n integers a1, a2, ..., an (0 ≤ ai ≤ 300).

It is guaranteed that at least one ai is positive.

Output

Print the sequence that consists of k (1 ≤ k ≤ 106) characters, each of them equals: "L", "R" or "P". Each character of the sequence is an instruction to the robot. Character "L" orders to move to the left, character "R" orders to move to the right, character "P" orders the robot to put a coin in the wallet. The robot is not allowed to go beyond the wallet line. In other words, you cannot give instructions "L" if the robot is at wallet 1, or "R" at wallet n.

As a result of the performed operations, the i-th wallet from the left must contain exactly ai coins. If there are multiple answers, you can print any of them.

Examples input

2
1 2
      

output

PRPLRP      

input

4
0 2 0 2
      

output

RPRRPLLPLRRRP      

題目連結:http://codeforces.com/contest/379/problem/B

原諒英語渣的我去搜了題解看了題意,實在是沒有了解明白。

題目意思:給定一個有n個錢包的序列,其中第i個錢包需要投入ai個錢币,需要編寫一個程式,使得在對第i個錢包不能連續投入

兩次錢币和隻有三種操作:向左移動一步,向右移動一步和向目前位置投入錢币的條件下,輸出把每個錢包需要投入的錢币數都完成

的步驟。

以上來自大牛的題目意思,看懂了意思就很簡單了,我用代碼講吧。

ps:做完了看了一眼大牛的題解,大牛純模拟做的,厲害!

代碼:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main(){
    int n,tmp;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&tmp);
        if(i)// 除最左邊的那個位置外,其餘位置都需要從目前位置向右移動一位
            printf("R");
        for(int j=0;j<tmp;j++){// tmp為0的時候不處理
            printf("P");
            if(i)
                printf("LR");// 防止右邊越界,都要向左移,接着回歸目前位置
            else
                printf("RL");// 最左邊的那個位置的特殊處理
        }
    }
    cout<<endl;
    return 0;
}