#fftc. [fft_c]高速フーリエ変換

[fft_c]高速フーリエ変換

问题陈述

这个问题是一个课堂上的问题。解析已经在页面底部显示了。

AtCoder 食堂正在考虑定食的菜单。

  • 主菜有 AiA_i 种,每种的价格为 ii 日元,其中 ii 的取值范围为 (1iN)(1 ≦ i ≦ N)
  • 副菜有 BiB_i 种,每种的价格为 ii 日元,其中 ii 的取值范围为 (1iN)(1 ≦ i ≦ N)

定食由一种主菜和一种副菜组成。定食的价格是所选主菜和副菜价格的总和。

对于每个 k(1k2N)k (1 ≦ k ≦ 2N),请计算价格为 kk 日元的定食种类的数量。

输入

从标准输入读入输入数据,输入格式如下:

NN A1A_1 B1B_1 A2A_2 B2B_2 : ANA_N BNB_N

  • 11 行包含整数 N(1N100,000)N (1 ≦ N ≦ 100,000)
  • 接下来的 NN 行,第 ii 行包含整数 Ai,Bi(0Ai,Bi100)A_i, B_i (0 ≦ A_i, B_i ≦ 100)

输出

输出结果到标准输出,输出格式如下:

输出 2N2N 行。第 kk 行输出价格为 kk 日元的定食种类的数量。

解析

高速フーリエ変換 from AtCoder Inc.

样例输入 1

4
1 1
2 2
3 4
4 8

样例输出 1

0
1
4
11
26
36
40
32
  • 价格为 11 日元的定食组合不存在。
  • 价格为 22 日元的组合只有一种,即价格为 11 日元的主菜和副菜各一种。
  • 价格为 33 日元的组合有 44 种,即 1×2+2×1=41\times2 + 2\times1 = 4 种。