Pagini recente » Cod sursa (job #2726837) | Cod sursa (job #334053) | Cod sursa (job #77782) | Cod sursa (job #2196716) | Cod sursa (job #1308604)
#include <iostream>
#include <fstream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <cmath>
#define pii pair<int, int>
#define mp make_pair
#define pb push_back
using namespace std;
const int NMax = 1024;
const int MOD = 666013;
int N;
pii a[NMax];
vector <pii> H[MOD];
int ans;
inline void Insert(const int x, const int y)
{
int cod = abs(x+y) % MOD;
H[cod].pb(mp(x, y));
}
inline bool Search(const int x, const int y)
{
int cod = abs(x+y) % MOD;
for (vector <pii> :: iterator it = H[cod].begin(); it != H[cod].end(); ++ it)
if (it -> first == x && it -> second == y)
return true;
return false;
}
void GetNumber(int & x, char * s)
{
int semn = 1;
int i = 1;
if (s[i] == '-')
{
semn = -1;
++ i;
}
x = 0;
for(; s[i]; ++ i)
if ('0' <= s[i] && s[i] <= '9')
x = x * 10 + s[i] - '0';
x = x * semn;
}
int main()
{
freopen ("patrate3.in", "r", stdin);
scanf ("%d", &N);
char ch[30];
for (int i = 1; i <= N; ++ i)
{
scanf ("%s", (ch+1));
GetNumber(a[i].first, ch);
scanf ("%s", (ch+1));
GetNumber(a[i].second, ch);
Insert(a[i].first, a[i].second);
}
for (int i = 1; i <= N; ++ i)
for (int j = i + 1; j <= N; ++ j)
{
double x1, x2, y1, y2;
x1 = a[i].first, y1 = a[i].second;
x2 = a[j].first, y2 = a[j].second;
if (x1 > x2)
{
swap (x1, x2);
swap (y1, y2);
}
double x3, y3, x4, y4;
double mijx = (x1 + x2) / 2.0, mijy = (y1 + y2) / 2.0;
double dx = fabs (mijx - x1), dy = fabs(mijy - y1);
if (y1 < y2)
{
x3 = mijx - dy, y3 = mijy + dx;
x4 = mijx + dy, y4 = mijy - dx;
}
else
{
x3 = mijx - dy, y3 = mijy - dx;
x4 = mijx + dy, y4 = mijy + dx;
}
if (x3 == (int)x3 && y3 == (int)y3 && x4 == (int)x4 && y4 == (int)y4 && Search((int)x3, (int)y3), Search((int)x4, (int)y4))
++ ans;
}
// for (int i = 0; i < MOD; ++ i)
// for (vector <pii> :: iterator it = H[i].begin(); it != H[i].end(); ++ it)
// cout << i << " " << it -> first << " " << it -> second << "\n";
freopen("patrate3.out", "w", stdout);
printf ("%d\n", ans / 2);
return 0;
}