Pagini recente » Cod sursa (job #2318757) | Cod sursa (job #2847898) | Cod sursa (job #2816595) | Cod sursa (job #204325) | Cod sursa (job #8181)
Cod sursa(job #8181)
#include <cstdio>
#include <algorithm>
using namespace std;
struct coor {
int x, y;
coor() {;}
coor(int a, int b) { x = a; y = b; }
};
bool operator<(const coor &a, const coor &b) {
return a.x < b.x || (a.x == b.x && a.y < 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, int k) {
return coor(a.x / k, a.y / k);
}
const int NMAX = 1024;
const int ZEC = 10000;
int N;
coor A[NMAX];
int cnt;
void read() {
FILE *fin = fopen("patrate3.in", "rt");
int i, u, v;
fscanf(fin, " %d", &N);
for (i = 0; i < N; ++i) {
fscanf(fin, " %d.%d", &u, &v);
A[i].x = (u * ZEC + v) * 10;
fscanf(fin, " %d.%d", &u, &v);
A[i].y = (u * ZEC + v) * 10;
}
fclose(fin);
}
void count() {
int i, j, r;
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, abs(mij.y - A[i].y) );
r = A[i].y < A[j].y ? 1 : -1;
c1 = coor(mij.x + r * d.y, mij.y - d.x),
c2 = coor(mij.x - r * 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;
}