問題一覧 > 通常問題

No.404 部分門松列

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 38
作問者 : りあん / テスター : anta
2 ProblemId : 1072 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2016-07-22 15:59:22

問題文

門松列 とは 3 個の要素からなる数列 A1,A2,A3 で以下の 2 つの条件を満たすものです。

  • A1,A2,A3 は全て異なる
  • 3 つの要素の中で A2 が最も大きい、または、A2 が最も小さい

与えられた数列の要素数3の部分列(連続でなくてもよい)のうち, 門松列であるものを部分門松列と呼ぶことにします.

このとき, 各クエリに対して, 真ん中の要素 (上の例における A2) の値が L 以上 H 以下となる部分門松列の個数を求めてください.

ただし, 部分列の各要素は並び替えてはいけません.

また, 取り出した部分列の各要素が同じでも, 取り出した位置が異なれば別々に数えることとします.

入力

N
a1 a2 ... aN
Q
L1 H1
:
LQ HQ

1行目に, 数列の要素数 N が与えられます.

続いて2行目に, 数列の各要素の値 ai (1iN) が空白区切りで与えられます.

続いて3行目に, クエリの数 Q が与えられます.

続いて4行目から Q 行の間, 真ん中の要素の値の範囲を決める値 Li, Hi が空白区切りで与えられます.

入力は, 以下の制約を満たします.

  • 1  N  2×105
  • 1  ai  109
  • 1  Q  2×105
  • 1  Li  Hi  109

なお, 部分点などはありませんが, 1_small*.inは N=Q=200, ai10000 となっています.

出力

出力は Q 行からなります.

i (1iQ) 行目には, 真ん中の要素の値が Li 以上 Hi 以下となる部分門松列の個数を出力してください.

最後に改行してください.

サンプル

サンプル1
入力
4
1 4 2 3
4
3 4
5 8
2 4
1 1
出力
2
0
3
0

要素数3の部分列は {1, 4, 2}, {1, 4, 3}, {1, 2, 3}, {4, 2, 3} の4通りで,

{1, 2, 3} 以外は門松列になっています.

よって, 部分門松列は {1, 4, 2}, {1, 4, 3}, {4, 2, 3} の3通りです.

サンプル2
入力
5
1 1 1 4 2
4
1 3
3 6
4 4
4 8
出力
0
3
3
3

{1, 4, 2} という部分列が3通り作れます.

サンプル3
入力
6
1 1 4 5 1 4
3
1 4
2 3
1 14514
出力
1
0
4

サンプル4
入力
1
1
1
1 1
出力
0

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。