Pagini recente » Istoria paginii runda/tp3/clasament | Istoria paginii utilizator/mrgere | Cod sursa (job #90146) | Cod sursa (job #609853) | Cod sursa (job #1453579)
#include <bits/stdc++.h>
using namespace std;
typedef int var;
ifstream fin("patrate3.in");
ofstream fout("patrate3.out");
#define Norm(a) a=(a+1e4)*1e4
typedef pair<var, var> Pair;
unordered_set<int64_t> Hash;
vector<Pair> Points;
#define in(v) (Hash.find(v) != Hash.end())
#define H(x,y) (x*1e9+y)
bool Patr(var i, var j) {
var x1 = Points[i].first, x2 = Points[j].first,
y1 = Points[i].second, y2 = Points[j].second;
var dx = x2 - x1, dy = y1 - y2;
var x3 = x2 + dy, y3 = y2 + dx,
x4 = x1 + dy, y4 = y1 + dx;
return (in(H(x3, y3)) && in(H(x4, y4)));
}
char buff[15];
void Read(var &a) {
fin>>buff;
a=0;
bool s=0;
var poz=0;
if(buff[0] == '-') s=1, poz++;
for(; buff[poz]; poz++)
if(isdigit(buff[poz]))
a = a * 10 + buff[poz] - '0';
if(s) a = -a;
}
int main() {
var n;
fin>>n;
var x, y;
for(var i=1; i<=n; i++) {
Read(x); Read(y);
//x += 1e8; y += 1e8;
Points.push_back(Pair(x, y));
Hash.insert(H(x, y));
}
var cnt = 0;
for(var i=0; i<n; i++) {
for(var j=i+1; j<n; j++) {
cnt += Patr(i, j);
cnt += Patr(j, i);
}
}
fout<<cnt / 4;
return 0;
}