Pagini recente » Cod sursa (job #1719149) | Cod sursa (job #2219714) | Cod sursa (job #997509) | Cod sursa (job #1138273) | Cod sursa (job #1968302)
#include <fstream>
#include <algorithm>
#define x first
#define y second
using namespace std;
ofstream fout ("trapez.out");
ifstream fin ("trapez.in");
int n,i,j,par,raspuns,k,curent;
pair < double , double > v[1005];
double rsp[1000005];
const double epsilon = 0.000000000001;
int main()
{
fin>>n;
for( i = 1 ; i <= n ; i++ )
fin>>v[ i ].x>>v[ i ].y;
for( i = 1 ; i < n ; i++ )
{
for( j = i + 1 ; j <= n ; j++ )
{
if( v[ i ].x == v[ j ].x )
par++;
else
rsp[ ++k ] = ( v[ i ].y - v[ j ].y ) / ( v[ i ].x - v[ j ].x );
}
}
sort( rsp + 1 , rsp + k + 1 );
for( i = 1 ; i < k ; i++ )
{
curent = 0;
while( max( rsp[ i ] - rsp[ i + 1 ] , rsp[ i + 1 ] - rsp[ i ] ) < epsilon && i < k )
{
i++;
curent++;
}
raspuns += ( curent * ( curent + 1 ) ) >> 1;
}
raspuns += ( par * ( par - 1 ) ) >> 1;
fout<<raspuns;
}