AtCoder Regular Contest 028
翻译中…
Problem Statement
翻译中…
高橋商店では $N$ 種類の商品が売られています。「どの種類の商品がいくつあるか」の情報が与えられるので、「合計 $M$ 個の商品を選ぶ方法」の数を求めて下さい。ただし、同じ種類の商品は区別しないこととします。
翻译中…
いや、これは少し簡単過ぎるので、ちょっとした注文も追加しよう。整数 $k$, $x$ からなる $Q$ 個の注文を用意したので、それぞれについて「$k_i$ 種類目の商品をちょうど $x_i$ 個選ばなければならないとき、合計 $M$ 個の商品を選ぶ方法」の数を求めて下さい。
翻译中…
Input
翻译中…
制約に誤りがあったため、修正しました。$1 ≦ Q ≦ 100,000$→$1 ≦ Q ≦ 500,000$(22:15)
翻译中…
入力は以下の形式で標準入力から与えられる。
翻译中…
N M Q
a_1 a_2 … a_N
k_1 x_1
k_2 x_2
:
k_Q x_Q
翻译中…
$1$行目には、商品の種類数を表した整数$N (1 ≦ N ≦ 2000)$と、選ぶ商品の個数を表す整数$M (1 ≦ M ≦ 2000)$と、注文の個数を表した整数$Q (1 ≦ Q ≦ 500,000)$が空白区切りで与えられる。$2$行目では、各種類の商品の個数の情報がスペース区切りで$N$個与えられる。このうち$i$番目では、$i$種類目の商品の個数を表す整数$a_i (1 ≦ a_i ≦ M)$が与えられる。$3$行目からの$Q$行では、注文に関する情報が与えられる。このうち$i$行目では、$2$つの整数$k_i (1 ≦ k_i ≦ N)$,$x_i (1 ≦ x_i ≦ a_{k_i})$が空白区切りで与えられる。これは、$i$個目の注文が「$k_i$種類目の商品をちょうど$x_i$個選ばなければならないとき、合計$M$個の商品を選ぶ方法の数を出力せよ」というものであることを表している。
翻译中…
部分点
翻译中…
この問題には部分点が設定されている。
翻译中…
$N ≦ 100, M ≦ 100, Q ≦ 100$を満たすテストケースすべてに正解した場合は$10$点が与えられる。$N ≦ 100, M ≦ 100$を満たすテストケースすべてに正解した場合はさらに$20$点が与えられる。$Q ≦ 1000$を満たすテストケースすべてに正解した場合はさらに$50$点が与えられる。
翻译中…
Output
翻译中…
$Q$ 行に出力せよ。そのうち $i$ 行目には、$i$ 個目の注文への答えを $1,000,000,007 (10^9+7)$ で割った余りを出力せよ。
翻译中…
样例
Input #1
3 5 2
3 2 2
1 3
1 0
Output #1
3
0
$1$ つ目の注文は「$1$ 種類目の商品をちょうど $3$ 個選ばなければならないとき、合計 $5$ 個の商品を選ぶ方法の数を出力せよ」というもので、そのような方法は以下の $3$ 通りある。
- $1$ 種類目の商品を $3$ 個、$2$ 種類目の商品を $2$ 個、$3$ 種類目の商品を $0$ 個選ぶ。
- $1$ 種類目の商品を $3$ 個、$2$ 種類目の商品を $1$ 個、$3$ 種類目の商品を $1$ 個選ぶ。
- $1$ 種類目の商品を $3$ 個、$2$ 種類目の商品を $0$ 個、$3$ 種類目の商品を $2$ 個選ぶ。
また $2$ つ目の注文では $2$ 種類目と $3$ 種類目の商品から合計 $5$ 個の商品を選ばなければならないが、商品が足りずそのような方法は存在しないため、$0$ と出力する。
Input #2
4 7 5
1 2 3 4
4 0
3 2
2 1
1 1
1 0
Output #2
0
5
5
9
6
题目信息
题面与样例版权归 AtCoder 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。