#bitflyer2018finalh. [bitflyer2018_final_h]三角形と格子点

[bitflyer2018_final_h]三角形と格子点

問題文

xyxy 平面上の点 PP が格子点であるとは、点 PPxx 座標および yy 座標がともに整数であることをいいます。

xyxy 平面上の三角形 ABCABC について、関数 f(ABC)f(ABC) を三角形 ABCABC の内部 (周上は含まない) に存在する格子点の個数とします。

88 個の整数 X1X_1, Y1Y_1, X2X_2, Y2Y_2, X3X_3, Y3Y_3 および WW, HH が与えられます。

以下の条件を満たす三角形 ABCABC すべてについての f(ABC)f(ABC) の値の和を 109+710^9 + 7 で割ったあまりを求めてください。

  • 頂点 AAxx 座標は X1X_1 以上 X1+WX_1 + W 未満の整数であり、yy 座標は Y1Y_1 以上 Y1+HY_1 + H 未満の整数である。
  • 頂点 BBxx 座標は X2X_2 以上 X2+WX_2 + W 未満の整数であり、yy 座標は Y2Y_2 以上 Y2+HY_2 + H 未満の整数である。
  • 頂点 CCxx 座標は X3X_3 以上 X3+WX_3 + W 未満の整数であり、yy 座標は Y3Y_3 以上 Y3+HY_3 + H 未満の整数である。

制約

  • 0leqXi,Yileq10120 \\leq X_i, Y_i \\leq 10^{12} (1leqileq31 \\leq i \\leq 3)
  • 1leqW,Hleq40,0001 \\leq W, H \\leq 40\\,000
  • X1+WleqX3X_1 + W \\leq X_3
  • X3+WleqX2X_3 + W \\leq X_2
  • Y1+HleqY2Y_1 + H \\leq Y_2
  • Y2+HleqY3Y_2 + H \\leq Y_3

入力

入力は以下の形式で標準入力から与えられる。

X1X_1 Y1Y_1 X2X_2 Y2Y_2 X3X_3 Y3Y_3 WW HH

出力

答えを出力せよ。


入力例 1

0 0
4 1
2 3
2 1

出力例 1

32

下の図における f(AiBjCk)f(A_iB_jC_k) (i,j,kin1,2i, j, k \\in \\{1, 2\\}) の和を 109+710^9 + 7 で割ったあまりを求めれば良いことになります。

image for sample 1

  • f(A1B1C1)=4f(A_1B_1C_1) = 4
  • f(A1B1C2)=3f(A_1B_1C_2) = 3
  • f(A1B2C1)=6f(A_1B_2C_1) = 6
  • f(A1B2C2)=4f(A_1B_2C_2) = 4
  • f(A2B1C1)=3f(A_2B_1C_1) = 3
  • f(A2B1C2)=3f(A_2B_1C_2) = 3
  • f(A2B2C1)=5f(A_2B_2C_1) = 5
  • f(A2B2C2)=4f(A_2B_2C_2) = 4

より、答えはこれらの和を 109+710^9 + 7 で割ったあまりである 3232 となります。


入力例 2

1 2
100 50
50 100
10 10

出力例 2

669378679

入力例 3

100 100
10000 1000
1000 10000
99 101

出力例 3

69068642

入力例 4

0 0
1000000000000 100000000000
100000000000 1000000000000
1 1

出力例 4

24258851

入力例 5

83014267509 107013567012
918384543326 586909285896
391608717054 614178832969
40000 40000

出力例 5

569338479