atcoder#ARC082C. [ARC082E] ConvexScore

[ARC082E] ConvexScore

配点 : 700700

問題文

二次元平面上に配置された NN 個の点 (xi,yi)(x_i,y_i) が与えられます。 NN 点の部分集合 SS であって、凸多角形をなすものを考えます。 ここで点集合SSが凸多角形をなすとは、 頂点の集合が SS と一致するような正の面積の凸多角形が存在することとします。ただし、凸多角形の内角は全て 180180^\circ 未満である必要があります。

例えば下図では、SS として {A,C,EA,C,E}, {B,D,EB,D,E} などは認められますが、{A,C,D,EA,C,D,E}, {A,B,C,EA,B,C,E}, {A,B,CA,B,C}, {D,ED,E}, {} などは認められません。

cddb0c267926c2add885ca153c47ad8a.png

SS に対し、NN 個の点のうち SS の凸包の内部と境界 (頂点も含む) に含まれる点の個数を nn とおき、 SS のスコアを、2nS2^{n-|S|} と定義します。

凸多角形をなすような考えうる全ての SS に対してスコアを計算し、これらを足し合わせたものを求めてください。

ただし答えはとても大きくなりうるので、998244353998244353 で割った余りをかわりに求めてください。

制約

  • 1N2001 \leq N \leq 200
  • 0xi,yi<104(1iN)0 \leq x_i,y_i<10^4 (1 \leq i \leq N)
  • iji \neq j なら xixjx_i \neq x_j または yiyjy_i \neq y_j
  • xi,yix_i,y_i は整数

入力

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

NN

x1x_1 y1y_1

x2x_2 y2y_2

::

xNx_N yNy_N

出力

スコアの総和を 998244353998244353 で割った余りを出力せよ。

4
0 0
0 1
1 0
1 1
5

SS として三角形(をなす点集合)が 44 つと四角形が 11 つとれます。どれもスコアは 20=12^0=1 となるので、答えは 55 です。

5
0 0
0 1
0 2
0 3
1 1
11

スコア 11 の三角形が 33 つ、スコア 22 の三角形が22つ、スコア 44 の三角形が 11 つあるので、答えは 1111 です。

1
3141 2718
0

SS として考えられるものがないので、答えは 00 です。