Rette

Correttore online – Esercizi intermedi

Sono date n rette nel piano, tutte distinte.
Ciascuna di esse è orizzontale o verticale.
Si deve calcolare il numero dei punti di intersezione di queste rette.

Dati di input

La prima riga dell’input contiene un intero n (0 < n < 105 +1).

Ciascuna delle successive n righe descrive una retta e contiene quattro numeri x1, y1, x2, y2 che sono le coordinate di due punti diversi che individuano la retta; questi numeri, in valore assoluto, non superano 109.

Dati di output

Stampare il numero complessivo di intersezioni.

Esempi di input/output

input.txt output.txt
1
0 0 1 0
0
3
0 0 1 0
0 1 1 1
0 0 0 1
2

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


/*
	www.valcon.it
	Correttore online - Esercizi intermedi - Rette
*/

#include 
#include 
using namespace std;

int main()
{
    ifstream fin ( "input.txt");
    ofstream fout("output.txt");

    int  n;             // numero di rette	
    long npunti;        // risposta;
    long x1, y1, x2, y2;
    int  oriz=0,
         vert=0;	

    fin >> n;        
    for(int i=1; i <= n; i++)
    {
    	fin >> x1 >> y1 >> x2 >> y2;
    	
    	     if(x1 == x2)  vert++;
    	else if(y1 == y2)  oriz++;
    }
    npunti=oriz*vert;
    
    fout << npunti << endl;
    return 0;
}

Lascia un commento