puncte

Time limit: 0.5s Memory limit: 32MB Input: puncte.in Output: puncte.out

Andrei se descurcă foarte bine la geometrie și de aceea născocește tot felul de jocuri pe care le testează cu Alexandru, colegul său de bancă. Pentru a pregăti noul joc cu trei niveluri, Andrei desenează pe o foaie de matematică reperul cartezian xOy și mai multe puncte distincte. Fiecare punct desenat are atât abscisa xx, cât și ordonata yy, numere întregi.

La primul nivel, Alexandru determină numărul maxim de puncte (dintre cele desenate) aflate pe una dintre axele sistemului cartezian sau pe o dreaptă paralelă cu una dintre cele două axe.

La al doilea nivel, Alexandru consideră toate punctele desenate a căror abscisă xx și ordonată yy verifică cel puțin una dintre relațiile x=yx = y sau x+y=0x + y = 0 și apoi calculează câte drepte distincte trec prin cel puțin două dintre aceste puncte.

La al treilea nivel, Alexandru numără și șterge punctele din 33 în 33 (primul, al 44-lea, al 77-lea etc.), începând cu cel mai din stânga punct desenat și continuând către dreapta. Dacă două sau mai multe puncte au aceeași abscisă, el le numără pe acestea de jos în sus (începând de la punctul cu ordonata cea mai mică). Când a ajuns cu număratul la cel mai din dreapta punct continuă cu cel mai din stânga punct rămas.

Alexandru se oprește cu numărarea și ștergerea când rămâne un singur punct desenat pe foaie.

Cerință

Scrieți un program care citește numărul natural nenul NN, apoi cele 2N2 \cdot N numere întregi ce reprezintă coordonatele celor NN puncte și determină:

  • NRPNRP, numărul maxim de puncte (dintre cele desenate) aflate pe una dintre axele sistemului cartezian sau pe o dreaptă paralelă cu una dintre cele două axe;
  • NRDNRD, numărul de drepte distincte care trec prin cel puțin două dintre punctele desenate a căror abscisa xx și ordonată yy verifică cel puțin una dintre relațiile x=yx = y sau x+y=0x + y = 0
  • XPXP reprezentând abscisa punctului rămas pe foaie la sfârșitul celui de-al treilea nivel al jocului.

Date de intrare

Fișierul de intrare puncte.in conține pe prima linie numărul NN de puncte, iar pe fiecare dintre următoarele NN linii, câte două numere întregi, despărțite printr-un spațiu, reprezentând, în ordine, abscisa și ordonata unui punct din plan.

Date de ieșire

Fișierul de ieșire puncte.out va conține pe prima linie numărul natural NRPNRP, pe a doua linie numărul natural NRDNRD, iar pe a treia linie numărul întreg ce reprezintă coordonata XPXP.

Restricții și precizări

  • 5N250 0005 \leq N \leq 250 \ 000;
  • coordonatele punctelor sunt numere întregi ce au maximum 33 cifre;
  • Se acordă 2020 % din punctaj pentru rezolvarea corectă a punctului a), 2020 % din punctaj pentru rezolvarea corectă a punctului b) și 6060 % din punctaj pentru rezolvarea corectă a punctului c).

Exemplu

puncte.in

5
-1 5
0 0
2 2
-3 3
2 -2

puncte.out

2
4
-1

Explicație

a) Sunt maximum 22 puncte aflate pe o dreaptă paralelă cu una dintre cele două axe sau pe axe

b) Sunt 44 drepte distincte care unesc cel puțin două dintre punctele (0,00,0), (2,22,2), (3,3-3,3) și (2,22,-2)

c) Se șterg, în ordine, punctele de coordonate: (3,3-3,3), (2,22,-2), (0,00,0), (2,22,2). Punctul rămas are coordonatele (1,5-1,5)

Log in or sign up to be able to send submissions!