Pagini recente » Cod sursa (job #1182113) | Cod sursa (job #2463091) | Cod sursa (job #1792188) | Cod sursa (job #1845284) | Cod sursa (job #797346)
Cod sursa(job #797346)
#include<stdio.h>
#include<math.h>
#include<fstream>
#include<algorithm>
using namespace std;
#define MAXN 10002
#define EPS 0.000001
typedef struct
{
double X, Y;
} point;
point v[ MAXN ];
point P;
int n, i, j, res;
double X1, X2, X3, X4, Y1, Y2, Y3, Y4, l;
inline int cmp(point i, point j)
{
if(fabs(i.X - j.X) < EPS)
return (i.Y < j.Y);
return (i.X < j.X);
}
inline int search_value(point P)
{
int st, end, mid, i;
st = 1, end = n;
while(st <= end)
{
mid = (st + end) / 2;
if( fabs(P.X - v[mid].X) < EPS && fabs(P.Y - v[mid].Y) < EPS )
return 1;
if(cmp(v[mid], P))
st = mid + 1;
else end = mid - 1;
}
return 0;
}
int main()
{
ifstream f("patrate3.in");
f >> n;
for(i = 1; i <= n; ++i)
f >> v[i].X >> v[i].Y;
f.close();
sort(v+1, v+n+1, cmp);
for(i = 1; i < n; ++i)
for(j = i + 1; j <= n; ++j)
{
X1 = v[i].X, Y1 = v[i].Y;
X2 = v[j].X, Y2 = v[j].Y;
X3 = X1 + Y1 - Y2;
Y3 = Y1 + X2 - X1;
X4 = X2 + Y1 - Y2;
Y4 = Y2 + X2 - X1;
P.X = X3, P.Y = Y3;
if(search_value(P))
{
P.X = X4, P.Y = Y4;
if(search_value(P))
++res;
}
}
res /= 2;
FILE *g = fopen("patrate3.out", "w");
fprintf(g, "%d\n", res);
fclose(g);
}