Pagini recente » Cod sursa (job #1668757) | Cod sursa (job #1463733) | Cod sursa (job #2668843) | Cod sursa (job #2271385) | Cod sursa (job #1264829)
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
#define mid (left + right) / 2
const int NMAX = 1505;
const double eps = 1.e-3;
struct POINT {
double x, y;
void read() {
scanf("%lf%lf", &x, &y);
}
};
POINT p[NMAX];
bool cmp (POINT a, POINT b) {
if(fabs(a.x - b.x) < eps)
return a.y < b.y;
return a.x < b.x;
}
int n;
bool found (double x, double y) {
int left, right;
left = 1;
right = n;
while(left < right) {
if(fabs(p[mid].x - x) < eps) {
if(fabs(p[mid].y - y) < eps)
return 1;
if(p[mid].y < y)
left = mid + 1;
else
right = mid - 1;
continue;
}
if(p[mid].x < x)
left = mid + 1;
else
right = mid - 1;
}
return 0;
}
int main() {
freopen("triang.in", "r", stdin);
freopen("triang.out", "w", stdout);
int i, j, res;
double xMid, yMid, xDif, yDif, lat, rad;
scanf("%d", &n);
for(i = 1; i <= n; ++ i)
p[i].read();
sort(p + 1, p + n + 1, cmp);
rad = sqrt(3) * 0.5;
res = 0;
for(i = 1; i <= n; ++ i)
for(j = i + 1; j <= n; ++ j) {
xDif = fabs(p[i].x - p[j].x);
yDif = fabs(p[i].y - p[j].y);
xMid = (p[i].x + p[j].x) * 0.5;
yMid = (p[i].y + p[j].y) * 0.5;
if(found(xMid + yDif * rad, yMid + xDif * rad))
++ res;
if(found(xMid - yDif * rad, yMid - xDif * rad))
++ res;
}
printf("%d\n", res);
return 0;
}