Quadrato

 

Dati quattro punti nel piano cartesiano, si vuole determinare se essi formano i vertici di un quadrato, comunque disposto nel piano cartesiano.
Si noti che non necessariamente i lati del quadrato devono essere paralleli od ortogonali rispetto agli assi; inoltre, in alcuni casi, alcuni punti potrebbero essere coincidenti.

Scrivere un programma che riceve le coordinate dei quattro punti nel piano cartesiano e determina se questi formano un quadrato.

Suggerimento:

dati tre punti P, Q e R, per verificare se l’angolo PQR è retto, sia V1=(x1, y1) il vettore che collega P a Q e V2=(x2, y2) il vettore che collega R a Q (basta prendere la differenza tra coordinate omologhe delle coppie di punti).
Affinché PQR sia retto, tali vettori devono essere perpendicolari, ossia il loro prodotto scalare deve essere nullo:

x1 x x2 + y1 x y2 = 0.

 

Dati di input

Il file input.txt è composto da quattro righe.
La i-esima riga contiene due interi x e y separati da uno spazio che rappresentano le coordinate dell’i-esimo punto (1 <= i <= 4).
Tutte le coordinate sono minori o uguali a 1000 in valore assoluto.

Dati di output

Il file output.txt è composto da una sola riga contenente l’indicazione SI se i quattro punti sono i vertici di un quadrato oppure l’indicazione NO in caso contrario.

Esempi

input.txt output.txt
1 0 0
1 1
0 1
1 0
SI
2 0 0
0 0
1 1
0 1
NO

Autore/i: A.S. Stankevich, ACM ICPC Team St. Petersburg State University of Information technology, Mechanics and Optics.