Олимпиадный тренинг

Задача . E. Новый год и строительство замком


Любимая видеоигра Кивона теперь проводит новогоднее мероприятие, чтобы мотивировать пользователей! Игра о строительстве и защите замка, поэтому Кивон задумался над следующей загадкой.

В двумерной плоскости у вас есть набор \(s = \{(x_1, y_1), (x_2, y_2), \ldots, (x_n, y_n)\}\), состоящий из \(n\) различных точек. В множестве \(s\) нет трех точек на одной прямой. Мы можем защитить точку \(p \in s\), построив замок. Замок — это простой четырехугольник (многоугольник с \(4\) вершинами), который строго покрывает точку \(p\) (то есть точка \(p\) строго внутри четырёхугольника).

Кивона интересует количество подмножеств \(s\) из \(4\)-х точек, которые можно использовать для построения замка, защищающего точку \(p\). Обратите внимание, что если одно подмножество может быть соединено более чем одним способом, чтобы покрыть точку, то оно считается только один раз.

Пусть \(f(p)\) будет количеством подмножеств из \(4\)-х точек, которые могут покрыть точку \(p\). Пожалуйста, посчитайте сумму \(f(p)\) по всем точкам \(p \in s\).

Входные данные

Первая строка содержит одно целое число \(n\) (\(5 \le n \le 2\,500\)).

Каждая из следующих \(n\) строк содержит два целых числа \(x_i\) и \(y_i\) (\(-10^9 \le x_i, y_i \le 10^9\)), которые обозначают координаты точки.

Гарантируется, что все точки различны и что нет трех коллинеарных точек.

Выходные данные

Выведите сумму \(f(p)\) по всем точкам \(p \in s\).


Примеры
Входные данныеВыходные данные
1 5
-1 0
1 0
-10 -1
10 -1
0 3
2
2 8
0 1
1 2
2 2
1 3
0 -1
-1 -2
-2 -2
-1 -3
40
3 10
588634631 265299215
-257682751 342279997
527377039 82412729
145077145 702473706
276067232 912883502
822614418 -514698233
280281434 -41461635
65985059 -827653144
188538640 592896147
-857422304 -529223472
213

time 3000 ms
memory 1024 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя