atcoder#ARC153C. [ARC153C] ± Increasing Sequence

[ARC153C] ± Increasing Sequence

题目描述

1 1 1 -1 のみからなる長さ N N の数列 A = (A1, , AN) A\ =\ (A_1,\ \ldots,\ A_N) が与えられます.

以下の条件をすべて満たす整数列 x = (x1, , xN) x\ =\ (x_1,\ \ldots,\ x_N) が存在するか否かを判定し, 存在する場合にはそのような整数列をひとつ答えてください.

  • 任意の i i (1 i N 1\leq\ i\leq\ N ) に対して xi  1012 |x_i|\ \leq\ 10^{12}
  • x x は狭義単調増加である.つまり x1 <  < xN x_1\ <\ \cdots\ <\ x_N
  • i=1N Aixi = 0 \sum_{i=1}^N\ A_ix_i\ =\ 0

输入格式

入力は以下の形式で標準入力から与えられます.

N N A1 A_1 \ldots AN A_N

输出格式

問題の条件をすべて満たす整数列 x x が存在するならば Yes を,そうでなければ No を出力してください.Yes の場合には,2 2 行目にそのような整数列 x x の各要素を,空白で区切って 1 1 行で出力してください.

x1 x_1 \ldots xN x_N

条件を満たす整数列が複数存在する場合は,どれを出力しても正解となります.

题目大意

给定 nn 和一个长度为 nn 的序列 AA,满足 Ai{1,1}A_i \in \{-1,1\}

你要尝试求出一个长度为 nn 的序列 xx,满足以下限制:

  • xi2×1012|x_i| \leq 2 \times 10^{12}

  • 序列严格递增,即 1i<n\forall 1 \leq i < nxi<xi+1x_i < x_{i+1}

  • i=1nAixi=0\sum_{i=1}^n{A_ix_i} = 0

如果存在这样的序列,输出 Yes 和一个满足条件的序列 xx;如果不存在,则输出 No

5
-1 1 -1 -1 1
Yes
-3 -1 4 5 7
1
-1
Yes
0
2
1 -1
No

提示

制約

  • 1 N 2× 105 1\leq\ N\leq\ 2\times\ 10^5
  • Ai  { 1, 1} A_i\ \in\ \lbrace\ 1,\ -1\rbrace

Sample Explanation 1

この出力について $ \sum_{i=1}^NA_ix_i=\ -(-3)\ +\ (-1)\ -\ 4\ -\ 5\ +\ 7\ =\ 0 $ となります.