Pagini recente » Cod sursa (job #815463) | Cod sursa (job #3179210) | Cod sursa (job #3248823) | Cod sursa (job #198904) | Cod sursa (job #2626443)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#define eps 0.00001
using namespace std;
struct punct{double x,y;}v[1001];
bool cmp(punct a, punct b)
{
if (abs(a.x - b.x) < eps)
return a.y < b.y;
return a.x < b.x;
}
bool find_p(int st, int dr, punct p)
{
if (st <= dr)
{
int mij = (st + dr)/2;
if (abs(v[mij].x - p.x) < eps && abs(v[mij].y - p.y) < eps)
return 1;
if (!cmp(v[mij],p))
return find_p(st, mij - 1, p);
else return find_p(mij+1, dr, p);
}
else return 0;
}
int main()
{
ifstream fin("patrate3.in");
ofstream fout("patrate3.out");
int N,i,j,rez = 0;
punct a,b;
fin >> N;
for (i = 1; i <= N; i++)
fin >> v[i].x >> v[i].y;
sort(v+1, v+N+1, cmp);
for (i = 1; i < N; i++)
for (j = i + 1; j <= N; j++)
{
a.x = v[i].x + v[i].y - v[j].y;
a.y = v[i].y + v[j].x - v[i].x;
b.x = v[j].x + v[i].y - v[j].y;
b.y = v[j].y + v[j].x - v[i].x;
if (find_p(1,N,a) && find_p(1,N,b))
rez++;
}
fout << rez/2;
fin.close();
fout.close();
return 0;
}