QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 1024 MB Total points: 100

#16593. 跳躍

الإحصائيات

整数 $N \ge 2$ に対して、$1$ から $N$ までの番号が付いた $N$ 個の頂点が、番号の昇順に一直線上に配置されている状況を考える。各 $i$ $(1 \le i \le N-1)$ について、頂点 $i$ と頂点 $i+1$ を結ぶ無向辺が存在する。

例えば、$N = 5$ のとき、頂点と辺の配置は次の図のようになる。

problem_16593_1.png

Jeongol はこのグラフ上をジャンプによって移動することができる。Jeongol がある頂点から別の頂点へジャンプするとき、その間に存在するすべての辺をちょうど一度ずつ通過する。

例えば:

  • Jeongol が頂点 $4$ から頂点 $2$ へジャンプすると、頂点 $3$ と $4$ の間の辺、および頂点 $2$ と $3$ の間の辺を、それぞれ一度ずつ通過する。
  • Jeongol が頂点 $3$ から頂点 $4$ へジャンプすると、頂点 $3$ と $4$ の間の辺を一度通過する。

Jeongol は頂点 $1$ から出発し、ちょうど $N-1$ 回のジャンプを行って、頂点 $N$ に到達する。この過程で、すべての頂点をちょうど一度ずつ訪れる(初期状態で頂点 $1$ にいることも訪問として数える)。

言い換えると、Jeongol が頂点を訪れる順序を $p_1 \to p_2 \to \cdots \to p_{N-1} \to p_N$ とすると、$p_1 = 1$、$p_N = N$、かつ ${p_1, p_2, \ldots, p_N} = {1, 2, \ldots, N}$ が成り立つ。

各 $i$ $(1 \le i \le N-1)$ について、$c_i$ を、Jeongol のジャンプ中に頂点 $i$ と頂点 $i+1$ の間の辺が通過される回数とする。

例えば、Jeongol が $(p_1 = 1) \to (p_2 = 3) \to (p_3 = 4) \to (p_4 = 2) \to (p_5 = 5)$ の順に頂点を訪れた場合、 $c_1 = 1$、$c_2 = 3$、$c_3 = 3$、$c_4 = 1$ となる。

problem_16593_2.png

各辺が何回通過されたかを表す数列 $c = (c_1, c_2, \ldots, c_{N-1})$ が与えられる。これに基づいて、Jeongol の訪問順序 $p_1, p_2, \ldots, p_N$ の一例を求めるプログラムを書きなさい。

与えられる数列 $c$ は、必ず何らかの有効な訪問順序から生成されたものであるため、少なくとも一つの解は常に存在する。複数の訪問順序が可能な場合は、そのうちの任意の一つを出力してよい。

制約

  • 入力される値はすべて整数である。
  • $2 \le N \le 200{,}000$
  • すべての $i$ $(1 \le i \le N-1)$ について、$1 \le c_i \le 10^9$
  • 入力は、少なくとも一つの有効な訪問順序が存在することを保証する。

小課題

  1. (10 点) $N \le 10$。
  2. (10 点) すべての $i$ $(1 \le i \le N-1)$ について、$c_i \le 3$。
  3. (15 点) $N \ge 4$ であり、$2 \le M \le N-2$ を満たす整数 $M$ が存在して、 $c_1 \le c_2 \le \cdots \le c_M$ かつ $c_M \ge c_{M+1} \ge \cdots \ge c_{N-1}$ が成り立つ。 すなわち、数列 $c$ は最初単調増加し、その後単調減少する。
  4. (35 点) $N \le 300$。
  5. (30 点) 追加の制約なし。

入力

1 行目に、頂点の数を表す整数 $N$ が与えられる。

2 行目に、$N-1$ 個の整数 $c_1, c_2, \ldots, c_{N-1}$ が空白区切りで与えられる。ここで、$c_i$ は頂点 $i$ と頂点 $i+1$ の間の辺が通過された回数を表す。

出力

Jeongol の訪問順序 $p_1, p_2, \ldots, p_N$ を空白区切りで出力せよ。複数の有効な訪問順序が存在する場合は、そのうちの任意の一つを出力してよい。

例 1

入力

5
1 3 3 1

出力

1 3 4 2 5

例 2

入力

7
1 3 3 5 3 1

出力

1 6 2 3 5 4 7

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.