Roby


Trimite soluție

Puncte: 10 (parțial)
Limita de timp: 1.0s
Limita de memorie: 64M

Autori:
Tip de problemă
Limbajele acceptate
C, C++, Python

Descriere

Roby este un aspirator-roboțel care are sarcina de a face curat într-o cameră. Roboțelul pleacă dintr-un punct de start \(P_1\) și apoi urmează un traseu care este o linie poligonală \(P_1 P_2 \ldots P_n P_1\), la final roboțelul întorcându-se și oprindu-se în \(P_1\). Fiecare punct \(P_i\) este descris prin coordonatele sale \((x_i, y_i)\). În fiecare punct \(P_i\) roboțelul trebuie să vireze la stânga sau la dreapta sau să continue să meargă pe aceeași dreaptă.

La final, pe langa curățarea camerei, Roby trebuie să indice numărul total de viraje la stânga, numărul total de viraje la dreapta și numărul de situații în care a rămas pe aceeași dreaptă. Ajutați-l pe Roby să își finalizeze cu bine sarcina, indicând cele trei numere.

Date de intrare

Datele de intrare se vor citi de la tastatură. Datele conțin pe prima linie un număr natural \(n\). Pe urmatoarele \(n\) linii se află perechi de numere întregi, reprezentând coordonatele punctelor \(P_1, P_2, \ldots, P_n\), în această ordine. Pentru fiecare \(i\), pentru punctul \(P_i\) sunt indicate pe aceeași linie coordonatele \(x_i\) și \(y_i\), separate printr-un spațiu.

Date de iesire

Se vor afișa pe o singură linie, separate prin spațiu, numarul total de viraje la stânga, numărul total de viraje la dreapta și numărul de situații în care a rămas pe aceeași dreaptă (în această ordine).

Restricții și precizări

  • \(3 \leq n \leq 10^5\).
  • \(-10\,000 \leq x_i, y_i \leq 10\,000\), \(\forall i=\overline{1,n}\).
  • Cazul de coliniaritate include situațiile următoare:
    1. roboțelul continuă deplasarea în același sens;
    2. roboțelul schimbă sensul deplasării rămânâd pe aceeași dreaptă;
    3. cel puțin două dintre punctele pentru care se realizează testarea coincid.

Exemplu

Input
7
1 1
2 2
2 0
3 0
4 0
5 0
6 0
Output
2 1 3
Explicație

Traseul parcurs de Roby are în total 6 viraje: 2 la stânga (în punctele \(P_3\) și \(P_7\)), 1 la dreapta (în \(P_2\)) și are 3 puncte în care continuă drept înainte (în \(P_4\), \(P_5\) si \(P_6\)).

În \(P_1\) nu este realizat niciun viraj, deoarece roboțelul se oprește.

Reprezentarea grafică a traseului lui Roby