Pagini recente » Cod sursa (job #1997396) | Cod sursa (job #1020829) | Cod sursa (job #2986554) | Cod sursa (job #2237433) | Cod sursa (job #2624949)
#include<bits/stdc++.h>
using namespace std;
ifstream f("patrate3.in");
ofstream g("patrate3.out");
int n, i, j, nr, dx, dy;
struct punct
{
int x, y;
} v[1005], mid;
int cmp(punct a, punct b)
{
return a.x<b.x;
}
double caut(double a, double b)
{
int st = 1, dr = n, mid;
while(st <= dr)
{
mid = (st + dr) / 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)
{
st = mid + 1;
}
else
{
dr = mid - 1;
}
}
return 0;
}
int main()
{
f>> n;
double valx, valy;
for(i = 1; i <= n; i++)
{
f>> valx >> valy;
v[i].x = round(valx * 10000);
v[i].y = round(valy * 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(caut(mid.x - dy, mid.y + dx) == 1 && caut(mid.x + dy, mid.y - dx) == 1)
{
nr++;
}
}
}
g<< nr / 2;
return 0;
}