QOJ.ac

QOJ

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

#1207. ビルの飾りつけ 3

Statistics

国際情報オリンピックが日本で開かれることとなり,世界の選手達を歓迎するため,空港から宿泊施設までの大通り沿いにある高層ビルを飾りつけることにした.ある著名なデザイナーにデザインを依頼したところ,飾りつけに利用するビルは,空港から宿泊施設に向けて高くなっていく必要があると言った.つまり,飾りつけに利用するビルの高さを空港に近いものから順に $h_1,h_2,h_3,\ldots$ とおくと,$h_1<h_2<h_3<\cdots$ となっていなければならない.

できるだけ飾りつけを華やかにするため,飾りつけに利用するビルの数をできるだけ多くしたい.飾りつけるビルを選ぶ作業を任された JOI 君は,ビルの所有者から「自分の所有するビルは必ず飾りつけに利用してほしい.しかも,ビルが目立つように,飾りつけに利用されるビルの中でそのビルが最も宿泊施設に近くなるようにしてほしい.」という無茶な要求をされる可能性に思い当たった.

空港から宿泊施設までの大通り沿いには $N$ 個のビルがあり,空港から $i$ 番目($1 \le i \le N$)に近いビルをビル $i$ と呼ぶことにする.$N$ 個のビルの高さは全て異なる.JOI 君はどのような要求がきても大丈夫なように「ビル $i$ を飾りつけに利用し,しかも飾りつけに利用されるビルの中でビル $i$ が最も宿泊施設に近くなるようにビルを選ぶとき,選べるビルの個数は最大で $A_i$ 個である」ということをあらかじめ計算しておいた.JOI 君はそのようにして計算した整数列 $A_1,A_2,\ldots,A_N$ をメモして,情報オリンピック日本委員会の K 理事長に提出した.

しかし,K 理事長が受け取ったメモには,実際には,長さ $N-1$ の整数列 $B_1,B_2,\ldots,B_{N-1}$ しか書かれていなかった.K 理事長はビルの高さの情報を知らないので,$A_i$ の値を計算することはできない.

K 理事長は,JOI 君が数を 1 個書き忘れたに違いないと考えた.整数列 $A_1,A_2,\ldots,A_N$ としてはビルの高さによって様々なものが考えられる.これらのうち,整数列から 1 箇所の値を取り除いたものが整数列 $B_1,B_2,\ldots,B_{N-1}$ になるものは何通りあるだろうか.

ただし,実際には,JOI 君は他にも書き損じをしているかもしれない.$B_1,B_2,\ldots,B_{N-1}$ の値によっては,そのようなものが 1 個もないこともあるかもしれない.

課題

長さ $N-1$ の整数列 $B_1,B_2,\ldots,B_{N-1}$ が与えられる.整数列 $A_1,A_2,\ldots,A_N$ として考えられるもののうち,1 箇所の値を取り除いたものが整数列 $B_1,B_2,\ldots,B_{N-1}$ になるものが何通りあるかを求めるプログラムを作成せよ.

入力

標準入力から以下の入力を読み込め.

  • 1 行目には整数 $N$ が書かれている.これは空港から宿泊施設までの大通り沿いにビルが $N$ 個あることを表す.
  • 続く $N-1$ 行のうちの $j$ 行目($1 \le j \le N-1$)には,整数 $B_j$ が書かれている.これは K 理事長が受け取ったメモに書かれた整数列の $j$ 番目の値である.

出力

標準出力に,整数列 $A_1,A_2,\ldots,A_N$ として考えられるもののうち,1 箇所の値を取り除いたものが整数列 $B_1,B_2,\ldots,B_{N-1}$ になるものの個数を表す整数を 1 行で出力せよ.

制約

すべての入力データは以下の条件を満たす.

  • $2 \le N \le 1\,000\,000$.
  • $1 \le B_j \le N$($1 \le j \le N-1$).

小課題

小課題 1 [10 点]

  • $N \le 8$ を満たす.

小課題 2 [30 点]

  • $N \le 300$ を満たす.

小課題 3 [60 点]

追加の制限はない.

入出力例

入力 1

4
1
1
2

出力 1

5

注記

空港から宿泊施設までの大通り沿いには 4 個のビルがある.ビル $i$ の高さを $H_i$ とする.

整数列 $A_1,A_2,A_3,A_4$ としてはビルの高さによって様々なものが考えられる.これらのうち,整数列から 1 箇所の値を取り除いたものが整数列 $1,1,2$ になるものは次の 5 通りである.

  • 整数列 $1,2,1,2$.例えば $H_2>H_4>H_1>H_3$ のとき,$A_1=1,A_2=2,A_3=1,A_4=2$ となる.また,$H_2>H_1>H_4>H_3$ のときも,$A_1=1,A_2=2,A_3=1,A_4=2$ となる.
  • 整数列 $1,1,2,3$.例えば $H_4>H_3>H_1>H_2$ のとき,$A_1=1,A_2=1,A_3=2,A_4=3$ となる.
  • 整数列 $1,1,2,1$.例えば $H_3>H_1>H_2>H_4$ のとき,$A_1=1,A_2=1,A_3=2,A_4=1$ となる.
  • 整数列 $1,1,2,2$.例えば $H_3>H_4>H_1>H_2$ のとき,$A_1=1,A_2=1,A_3=2,A_4=2$ となる.
  • 整数列 $1,1,1,2$.例えば $H_4>H_1>H_2>H_3$ のとき,$A_1=1,A_2=1,A_3=1,A_4=2$ となる.

入力 2

8
1
1
2
1
2
3
1

出力 2

15

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.