B. New Year Present----构造

来源:互联网 发布:ddos日志分析算法 编辑:程序博客网 时间:2024/06/10 00:16

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
21 2
output
PRPLRP
input
40 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;}


原创粉丝点击