Pagini recente » Cod sursa (job #270870) | Cod sursa (job #2262711) | Cod sursa (job #1948620) | Cod sursa (job #482473) | Cod sursa (job #2179037)
#include <bits/stdc++.h>
using namespace std;
ifstream in("patrate3.in");
ofstream out("patrate3.out");
struct point{
double x, y;
};
int n, cnt;
point P[1010];
bool cmp(const point &a, const point &b){
return (a.x == b.x ? a.y < b.y : a.x < b.x);
}
bool egal(double x, double y){
return abs(x - y) < 0.00000001;
}
bool bs(point M){
int st = 1, dr = n, mid;
while(st <= dr){
mid = st + dr >> 1;
if(egal(P[mid].x, M.x)){
if(egal(P[mid].y, M.y))
return 1;
if(P[mid].y <= M.y)
st = mid + 1;
else dr = mid - 1;
continue;
}
if(P[mid].x <= M.x)
st = mid + 1;
else dr = mid - 1;
}
return 0;
}
int main(){
in >> n;
for(int i = 1; i <= n; i++)
in >> P[i].x >> P[i].y;
sort(P + 1, P + n + 1, cmp);
for(int i = 1; i < n; i++){
for(int j = i + 1; j <= n; j++){
point M, A, B;
M.x = (P[i].x + P[j].x) / 2;
M.y = (P[i].y + P[j].y) / 2;
double H = abs(P[j].y - M.y);
double L = abs(P[j].x - M.x);
if(P[j].y < P[i].y)
H = -H;
A.x = M.x - H;
A.y = M.y + L;
B.x = M.x + H;
B.y = M.y - L;
if(bs(A) && bs(B))
cnt++;
}
}
out << cnt / 2;
return 0;
}