aproapecoliniare

Time limit: 3s Memory limit: 512MB Input: aproapecoliniare.in Output: aproapecoliniare.out

Cerința

Conform unor texte antice (din noiembrie 2022), punctele AA, BB și CC se numesc aproape coliniare dacă d(A,B)+d(B,C)=d(A,C)d(A,B)+d(B,C)=d(A,C), unde d(M,N)=XMXN+YMYNd(M,N)=|X_M-X_N|+|Y_M-Y_N| reprezintă distanța Manhattan dintre punctele MM și NN.

Se dau coordonatele a nn puncte în plan P1,P2,,PnP_1,P_2,\ldots,P_n. Găsiți numărul de triplete (i,j,k)(i,j,k) (1i,j,kn1 \le i,j,k \le n, ijkii \neq j \neq k \neq i) cu proprietatea că punctele PiP_i, PjP_j și PkP_k sunt aproape coliniare.

Date de intrare

Pe prima linie a fișierului de intrare aproapecoliniare.in se va afla numărul de puncte nn (3n31053 \le n \le 3 \cdot 10^5).

Pe fiecare din următoarele nn linii se vor afla două numere xix_i și yiy_i (1xi,yi1091 \le x_i,y_i \le 10^9) — coordonatele punctului PiP_i.

Se garantează că toate punctele din fișierul de intrare sunt distincte.

Date de ieșire

Fișierul de ieșire aproapecoliniare.out va conține numărul de triplete (i,j,k)(i,j,k) (1i,j,kn1 \le i,j,k \le n, ijkii \neq j \neq k \neq i) cu proprietatea că punctele PiP_i, PjP_j și PkP_k sunt aproape coliniare.

Restricții

  • Pentru 88 puncte, n300n \le 300
  • Pentru 1212 puncte, n,xi,yi800n,x_i,y_i \le 800
  • Pentru 1010 puncte, n,xi,yi3000n,x_i,y_i \le 3000
  • Pentru 55 puncte, n3000n \le 3000
  • Pentru 2020 de puncte, n,xi,yi50000n,x_i,y_i \le 50000
  • Pentru 1010 puncte, n50000n \le 50000
  • Pentru 2020 de puncte, toate coordonatele xx și toate coordonatele yy sunt distincte.
  • Pentru 1515 puncte, nu se impun restricții suplimentare.

Exemple

Exemplu 1:

aproapecoliniare.in

5
1 1
2 2
3 1
3 2
3 3

aproapecoliniare.out

16

Explicații

Cele 1616 triplete din exemplu sunt:

  • (1,2,4)(1,2,4) și (4,2,1)(4,2,1)
  • (1,2,5)(1,2,5) și (5,2,1)(5,2,1)
  • (3,4,5)(3,4,5) și (5,4,3)(5,4,3)
  • (2,4,3)(2,4,3) și (3,4,2)(3,4,2)
  • (2,4,5)(2,4,5) și (5,4,2)(5,4,2)
  • (1,3,4)(1,3,4) și (4,3,1)(4,3,1)
  • (1,3,5)(1,3,5) și (5,3,1)(5,3,1)
  • (1,4,5)(1,4,5) și (5,4,1)(5,4,1)

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