Pagini recente » Cod sursa (job #36937) | Cod sursa (job #1023837) | Cod sursa (job #2029528) | Cod sursa (job #2171583) | Cod sursa (job #1552455)
#include <cstdio>
#include <algorithm>
#define DIM 1024
#define x first
#define y second
using namespace std;
int Y1, y2, y3, y4;
int x1, x2, x3, x4;
int N, nr; double X, Y;
pair <int, int> P[DIM];
inline int findValue (int X, int Y) {
int st = 1, dr = N, mid;
while (st <= dr) {
mid = st + (dr - st) / 2;
if (P[mid].x == X && P[mid].y == Y)
return 1;
if (P[mid].x < X || (P[mid].x == X && P[mid].y < Y))
st = mid + 1;
else
dr = mid - 1;
}
return 0;
}
inline int abs (int X) {
return X > 0 ? X : -X;
}
int main () {
freopen ("patrate3.in" ,"r", stdin );
freopen ("patrate3.out","w", stdout);
scanf ("%d", &N);
for (int i = 1; i <= N; i ++) {
scanf ("%lf %lf", &X, &Y);
X += 10000; Y += 10000;
P[i].x = (int)(X * 100000);
P[i].y = (int)(Y * 100000);
}
sort (P + 1, P + N + 1);
for (int i = 1 ; i <= N; i ++) {
for (int j = i + 1; j <= N; j ++) {
x1 = P[i].x; Y1 = P[i].y;
x2 = P[j].x; y2 = P[j].y;
if (Y1 < y2) {
x3 = (x1 + x2) / 2 + abs ((Y1 + y2) / 2 - Y1);
y3 = (Y1 + y2) / 2 - abs ((x1 + x2) / 2 - x1);
x4 = (x1 + x2) / 2 - abs ((Y1 + y2) / 2 - Y1);
y4 = (Y1 + y2) / 2 + abs ((x1 + x2) / 2 - x1);
} else {
x3 = (x1 + x2) / 2 - abs ((Y1 + y2) / 2 - Y1);
y3 = (Y1 + y2) / 2 - abs ((x1 + x2) / 2 - x1);
x4 = (x1 + x2) / 2 + abs ((Y1 + y2) / 2 - Y1);
y4 = (Y1 + y2) / 2 + abs ((x1 + x2) / 2 - x1);
}
if (findValue (x3, y3) && findValue (x4, y4))
nr ++;
}}
printf ("%d\n", nr);
return 0;
}