EduBrick

B. Выпуклая оболочка

2000 мс · 256 МБ · всё или ничего

Даны NN точек на плоскости. Постройте их выпуклую оболочку и посчитайте её площадь.

Точки произвольны: среди них бывают совпадающие и бывает много лежащих на одной прямой. Гарантируется, что не все точки лежат на одной прямой.

Никакие три подряд идущие вершины ответа не должны лежать на одной прямой. Обход выводите против часовой стрелки, начиная с вершины с наименьшей координатой xx; если таких несколько — с наименьшей yy.

Формат ввода

В первой строке — число NN (3≤N≤1053 \le N \le 10^5). В следующих NN строках — пары целых xx, yy (∣x∣,∣y∣≤109|x|, |y| \le 10^9).

Формат вывода

В первой строке выведите KK — число вершин оболочки. В следующих KK строках — их координаты в порядке обхода. В последней строке выведите удвоенную площадь оболочки: это целое число.

Примеры

ввод
5
0 0
2 0
0 2
1 1
2 2
вывод
4
0 0
2 0
2 2
0 2
8
ввод
3
0 0
0 1
1 1
вывод
3
0 0
1 1
0 1
1
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.