Pagini recente » Cod sursa (job #1237473) | Cod sursa (job #325680) | Cod sursa (job #1005962) | Cod sursa (job #1879151) | Cod sursa (job #1769632)
#include <algorithm>
#include <fstream>
#include <set>
#define se second
#define fi first
#define DIM 10000
using namespace std;
ifstream f ("patrate3.in");
ofstream g ("patrate3.out");
int n , ans;
double x , y;
pair <double , double> v[DIM];
bool cbin (pair <double , double> x) {
int i , p = 0;
for (i = 1; i <= n; i <<= 1);
while (i) {
if (i + p <= n && (v[i + p].fi < x.fi || (v[i + p].fi == x.fi && v[i + p].se <= x.se))) {
p += i;
}
i >>= 1;
}
if (v[p] == x) {
return true;
}
return false;
}
int main() {
f >> n;
for (int i = 1; i <= n; ++i) {
f >> x >> y;
v[i].fi = round(x * 10000);
v[i].se = round(y * 10000);
}
sort (v + 1 , v + n + 1);
for (int i = 1; i <= n; ++i) {
for (int j = i + 1; j <= n; ++j) {
pair <double , double> p1 , p2;
p1.fi = v[i].fi + v[i].se - v[j].se;
p1.se = v[i].se + v[j].fi - v[i].fi;
p2.fi = v[j].fi + v[i].se - v[j].se;
p2.se = v[j].se + v[j].fi - v[i].fi;
int ok = cbin (p1);
if (!ok) {
continue;
}
ok = cbin (p2);
if (ok) {
++ans;
}
}
}
g << ans / 2;
return 0;
}