Напишите программу, чтобы определить, является ли входной многоугольник выпуклым . Многоугольник задается одной строкой, содержащей N , количество вершин, затем N строк, содержащих координаты x и y каждой вершины. Вершины будут перечислены по часовой стрелке, начиная с произвольной вершины.
пример 1
вход
4
0 0
0 1
1 1
1 0
выход
convex
пример 2
вход
4
0 0
2 1
1 0
2 -1
выход
concave
пример 3
вход
8
0 0
0 1
0 2
1 2
2 2
2 1
2 0
1 0
выход
convex
x и y являются целыми числами, N <1000 и | x |, | y | <1000 . Можно предположить, что входной многоугольник прост (ни одно из ребер не пересекается, только 2 ребра касаются каждой вершины). Кратчайшая программа выигрывает.
«Простой» не включает «последовательные ребра неколлинеарны» ?! Также еще пара тест-кейсов: (0,0) (0,2) (2,2) (2,0) (1,1); и (1,1) (0,0) (0,2) (2,2) (2,0) - для проверки случаев, когда нахождение вогнутой вершины требует переноса с конца обратно на начало.
—
Питер Тейлор
Этот вопрос устарел, но ... Попробуйте добавить вогнутый пример с двумя выровненными сегментами, например, модификацию примера 2: (0,0), (2,1), (4,2), (1,0) ( 2, -1). Я поднял это, потому что я обдумал пример 3, не осознавая этого.
—
Джесси Милликен