Pagini recente » Cod sursa (job #297448) | Cod sursa (job #744829) | Cod sursa (job #1283576) | Cod sursa (job #872134) | Cod sursa (job #2625941)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("patrate3.in");
ofstream fout("patrate3.out");
int n, i, j, nr, dx, dy;
struct punct
{
int x, y;
} v[1005], mid;
bool cmp(punct a, punct b)
{
if (a.x == b.x)return a.y < b.y;
return a.x < b.x;
}
int binarySearch(int a, int b)
{
int l = 1, r = n, mid;
while(l <= r)
{
mid = (l + r) / 2;
if(v[mid].x == a && v[mid].y == b)
{
return 1;
}
if((a == v[mid].x && v[mid].y < b) || v[mid].x < a)
{
l = mid + 1;
}
else
{
r = mid - 1;
}
}
return 0;
}
int main()
{
fin>> n;
double vx, vy;
for(i = 1; i <= n; i++)
{
fin>> vx >> vy;
v[i].x = round(vx * 10000);
v[i].y = round(vy * 10000);
}
sort(v + 1, v + n + 1, cmp);
for(i = 1; i < n; i++)
{
for(j = i + 1; j <= n; j++)
{
mid.x = (v[i].x + v[j].x) / 2;
mid.y = (v[i].y + v[j].y) / 2;
dx = mid.x - v[i].x;
dy = mid.y - v[i].y;
if(binarySearch(mid.x - dy, mid.y + dx) == 1 && binarySearch(mid.x + dy, mid.y - dx) == 1)
{
nr++;
}
}
}
fout<< nr / 2;
return 0;
}