CF1158D.Winding polygonal line

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

Vasya has nn different points A1,A2,AnA_1, A_2, \ldots A_n on the plane. No three of them lie on the same line He wants to place them in some order Ap1,Ap2,,ApnA_{p_1}, A_{p_2}, \ldots, A_{p_n} , where p1,p2,,pnp_1, p_2, \ldots, p_n — some permutation of integers from 11 to nn .

After doing so, he will draw oriented polygonal line on these points, drawing oriented segments from each point to the next in the chosen order. So, for all 1in11 \leq i \leq n-1 he will draw oriented segment from point ApiA_{p_i} to point Api+1A_{p_{i+1}} . He wants to make this polygonal line satisfying 22 conditions:

  • it will be non-self-intersecting, so any 22 segments which are not neighbors don't have common points.
  • it will be winding.

Vasya has a string ss , consisting of (n2)(n-2) symbols "L" or "R". Let's call an oriented polygonal line winding, if its ii -th turn left, if $s_i = $ "L" and right, if $s_i = $ "R". More formally: ii -th turn will be in point Api+1A_{p_{i+1}} , where oriented segment from point ApiA_{p_i} to point Api+1A_{p_{i+1}} changes to oriented segment from point Api+1A_{p_{i+1}} to point Api+2A_{p_{i+2}} . Let's define vectors v1=ApiApi+1\overrightarrow{v_1} = \overrightarrow{A_{p_i} A_{p_{i+1}}} and v2=Api+1Api+2\overrightarrow{v_2} = \overrightarrow{A_{p_{i+1}} A_{p_{i+2}}} . Then if in order to rotate the vector v1\overrightarrow{v_1} by the smallest possible angle, so that its direction coincides with the direction of the vector v2\overrightarrow{v_2} we need to make a turn counterclockwise, then we say that ii -th turn is to the left, and otherwise to the right. For better understanding look at this pictures with some examples of turns:

There are left turns on this picture There are right turns on this pictureYou are given coordinates of the points A1,A2,AnA_1, A_2, \ldots A_n on the plane and string ss . Find a permutation p1,p2,,pnp_1, p_2, \ldots, p_n of the integers from 11 to nn , such that the polygonal line, drawn by Vasya satisfy two necessary conditions.

输入格式

The first line contains one integer nn — the number of points ( 3n20003 \leq n \leq 2000 ). Next nn lines contains two integers xix_i and yiy_i , divided by space — coordinates of the point AiA_i on the plane ( 109xi,yi109-10^9 \leq x_i, y_i \leq 10^9 ). The last line contains a string ss consisting of symbols "L" and "R" with length (n2)(n-2) . It is guaranteed that all points are different and no three points lie at the same line.

输出格式

If the satisfying permutation doesn't exists, print 1-1 . In the other case, print nn numbers p1,p2,,pnp_1, p_2, \ldots, p_n — the permutation which was found ( 1pin1 \leq p_i \leq n and all p1,p2,,pnp_1, p_2, \ldots, p_n are different). If there exists more than one solution, you can find any.

输入输出样例

  • 输入#1

    3
    1 1
    3 1
    1 3
    L
    

    输出#1

    1 2 3
  • 输入#2

    6
    1 0
    0 1
    0 2
    -1 0
    -1 -1
    2 1
    RLLR
    

    输出#2

    6 1 3 4 2 5
    

说明/提示

This is the picture with the polygonal line from the 11 test:

As we see, this polygonal line is non-self-intersecting and winding, because the turn in point 22 is left.

This is the picture with the polygonal line from the 22 test:

首页