Pagini recente » Cod sursa (job #2500235) | Cod sursa (job #1418064) | Cod sursa (job #1217163) | Cod sursa (job #540324) | Cod sursa (job #1365586)
#include<fstream>
#include<iostream>
#include<vector>
using namespace std;
ifstream in("patrate3.in");
ofstream out("patrate3.out");
const int NMAX = 1000;
struct punct{
int x,y;
};
punct v[NMAX + 5];
int n,sol;
class HASH{
public:
vector<int> H[660097 + 5];
void add(int val){
int key = val % 660097;
if(key < 0)
key = -key;
H[key].push_back(val);
}
bool is_in_hash(int val){
int key = val % 660097;
if(key < 0)
key = -key;
for(int i = 0 ; i < H[key].size() ; ++i)
if(H[key][i] == val)
return true;
return false;
}
};
HASH hx,hy;
void read_a(int* a)
{
int sgn = 1;
char c;
in>>c;
*a = 0;
if(c == '-'){
sgn == -1;
in>>c;
}
while(c != '.'){
*a = *a * 10 + (c -'0');
in>>c;
}
for(int i = 1 ; i <= 4 ; ++i){
in>>c;
*a = *a * 10 + (c - '0');
}
*a = *a * sgn;
}
void read()
{
in>>n;
int a,b;
for(int i = 1 ; i <= n ; ++i){
read_a(&a);
read_a(&b);
v[i].x = a;
v[i].y = b;
hx.add(v[i].x);
hy.add(v[i].y);
}
in.close();
}
int main()
{
read();
for(int i = 1 ; i < n ; ++i)
for(int j = i + 1; j <= n ; j++)
{
int ax = v[i].x + v[i].y - v[j].y;
int ay = v[i].y + v[j].x - v[i].x;
int bx = v[j].x + v[i].y - v[j].y;
int by = v[j].y + v[j].x - v[i].x;
if(hx.is_in_hash(ax) && hx.is_in_hash(bx) && hy.is_in_hash(ay) && hy.is_in_hash(by))
++sol;
}
out<<sol/2;
return 0;
}