全探索して,3点が一直線上になければ+1すれば良い.
一直線上にあることは,$x$が小さい順に点を$P_{1}, P_{2}, P_{3}$として,条件【「点$P_{1}$と点$P_{2}$の傾き」=「点$P_{1}$と点$P_{3}$の傾き」】を満たすかどうかで判定できる.
分数だと分母がゼロのときなど面倒なので,分母を払った条件式にする.
N = int(input()) P = sorted([list(map(int, input().split())) for _ in range(N)]) ans = 0 for i in range(N): for j in range(i + 1, N): for k in range(j + 1, N): x1, y1 = P[i][0], P[i][1] x2, y2 = P[j][0], P[j][1] x3, y3 = P[k][0], P[k][1] if (y2 - y1) * (x3 - x1) == (x2 - x1) * (y3 - y1): continue ans += 1 print(ans)