C - Convex Crusher Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MiB

配点 : 100

問題文

2 次元平面上の N 点が与えられます。i 番目の点の座標は (x_i,y_i) です。この N 点から、以下の条件を満たすようにいくつかの点に印を付けます。

  • 印を付けた点のうちの相異なる 4 点を頂点とするような凸四角形が存在しない。

印を付ける点の個数として考えられる最大値を出力してください。

凸四角形の定義 平面上の相異なる 4 点を頂点とする四角形が凸四角形であるとは、以下の条件をすべて満たすことをいいます。
  • どの 3 頂点も同一直線上にない。
  • 隣接しない 2 辺は共有点を持たない。
  • 四角形のどの内角も 180 度未満である。

制約

  • 入力は全て整数
  • 4 \leq N \leq 500
  • |x_i|,|y_i|\leq 10^8
  • (x_i,y_i)\neq(x_j,y_j)\ (i\neq j)

入力

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

N
x_1 y_1
x_2 y_2
\vdots
x_N y_N

出力

答えを 1 行に出力せよ。


入力例 1

5
0 0
-1 0
0 -1
1 0
0 1

出力例 1

4

(-1,0) を除く 4 点に印を付けることができます。全ての点に印を付けると、(0,0) を除く 4 点を頂点とする凸四角形が存在してしまうので、条件を満たしません。


入力例 2

5
0 0
1 1
2 2
2 3
3 2

出力例 2

5

入力例 3

7
-1 8
11 8
-4 -2
19 12
-8 -6
7 6
-1 2

出力例 3

6

入力例 4

4
0 0
2 0
1 -1
0 1

出力例 4

3