Pagini recente » Cod sursa (job #489915) | Cod sursa (job #1939534) | Cod sursa (job #154652) | Cod sursa (job #539054) | Cod sursa (job #8505)
Cod sursa(job #8505)
#include <cstdio>
#include <algorithm>
using namespace std;
const float eps = 1e-4;
template <typename T>
T ABS(T X) { return X < 0 ? -X : X; }
struct coor {
float x, y;
coor() {;}
coor(const float a, const float b) { x = a; y = b; }
};
bool operator<(const coor &a, const coor &b) {
return a.x + eps < b.x || (ABS(a.x - b.x) < eps && a.y + eps < b.y);
}
coor operator+(const coor &a, const coor &b) {
return coor(a.x + b.x, a.y + b.y);
}
coor operator/(const coor &a, const int k) {
return coor(a.x / k, a.y / k);
}
const int NMAX = 1024;
int N;
coor A[NMAX];
int cnt;
void read() {
FILE *fin = fopen("patrate3.in", "rt");
int i;
fscanf(fin, " %d", &N);
for (i = 0; i < N; ++i)
fscanf(fin, " %f %f", &A[i].x, &A[i].y);
fclose(fin);
}
void count() {
int i, j;
coor c1, c2, mij, d;
for (i = 0; i < N; ++i)
for (j = i + 1; j < N; ++j) {
mij = (A[i] + A[j]) / 2;
d = coor( mij.x - A[i].x, mij.y - A[i].y );
c1 = coor(mij.x + d.y, mij.y - d.x);
c2 = coor(mij.x - d.y, mij.y + d.x);
if (binary_search(A + i + 1, A + N, c1) && binary_search(A + i + 1, A + N, c2))
++cnt;
}
}
void write() {
FILE *fout = fopen("patrate3.out", "wt");
fprintf(fout, "%d\n", cnt);
fclose(fout);
}
int main() {
read();
sort(A, A + N);
count();
write();
return 0;
}