Pagini recente » Cod sursa (job #2295660) | Cod sursa (job #2709808) | Cod sursa (job #2196519) | Cod sursa (job #1819326) | Cod sursa (job #1615441)
#include <bits/stdc++.h>
using namespace std;
# define pb push_back
# define mp make_pair
# define FORN( a , b , c ) for ( int a = b ; a <= c ; ++ a )
# define FORNBACK( a , b , c ) for ( int a = b ; a >= c ; -- a )
const int MAX = 1e3 + 14 ;
pair < double , double > a [ MAX ] ;
struct muie {
double len ;
double x , y ;
};
muie q [ MAX * MAX ] ;
inline bool cmp ( muie a , muie b )
{
if ( fabs ( a.len - b.len ) < 0.00001 ) {
if ( fabs ( a.x - b.x ) < 0.00001 ) {
return a.y - b.y < -0.00001;
}
return a.x - b.x < -0.00001 ;
}
return a.len - b.len < -0.00001 ;
}
int main()
{
ios :: sync_with_stdio ( false ) ;
freopen( "patrate3.in" , "r" , stdin ) ;
freopen( "patrate3.out" , "w" , stdout ) ;
int t = 1 ;
while ( t -- ){
int n ;
cin >> n ;
FORN ( i , 1 , n )
{
cin >> a [ i ].first >> a [ i ].second ;
}
int cate = 0 ;
FORN ( i , 1 , n )
{
FORN ( j , 1 , i - 1 )
{
++ cate ;
q [ cate ].x = ( a [ i ].first + a [ j ].first ) ;
q [ cate ].y = ( a [ i ].second + a [ j ].second ) ;
q [ cate ].len = 1LL * ( a [ i ].first - a [ j ].first ) * ( a [ i ].first - a [ j ].first ) +
1LL * ( a [ i ].second - a [ j ].second ) * ( a [ i ].second - a [ j ].second ) ;
}
}
sort ( q + 1 , q + cate + 1 , cmp ) ;
long long ans = 0 ;
long long len = 0 ;
FORN ( i , 1 , cate )
{
int j = i ;
while ( j <= cate and fabs ( q [ j ].len - q [ i ].len ) < 0.00001 and fabs ( q [ j ].x - q [ i ].x ) < 0.00001 and fabs ( q [ j ].y - q [ i ].y ) < 0.00001 ) ++ j ;
len = j - i ;
i = j - 1 ;
ans = ans + len * ( len - 1 ) / 2 ;
}
cout << ans << "\n";
}
return 0 ;
}