Pagini recente » Cod sursa (job #3130464) | camelia_01 | Cod sursa (job #2092152) | Cod sursa (job #98543) | Cod sursa (job #687071)
Cod sursa(job #687071)
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
struct per{int x, y;};
vector <per> v;
bool Comp(per a, per b){
if (a.x == a.y) return a.y < b.y;
return a.x < b.x;
}
bool Is(int x, int y){
int st = 0, dr = v.size()-1, m;
while (st <= dr){
m = (st + dr) / 2;
if (v[m].x == x && v[m].y == y) return true;
if (Comp(v[m], (per){x, y})) st = m + 1;
else dr = m - 1;
}
return false;
}
int main(void){
int n, i, j, N, x, y, x1, x2, y1, y2;
freopen("patrate3.in", "r", stdin), freopen("patrate3.out", "w", stdout);
scanf ("%d", &n);
for (i = 0; i < n; i++){
scanf("%d.%d %d.%d", &x1, &y1, &x2, &y2);
x = x1 * 10000 + (x1 > 0 ? 1 : -1) * y1;
y = x2 * 10000 + (x2 > 0 ? 1 : -1) * y2;
v.push_back((per) {x, y});
}
sort(v.begin(), v.end(), Comp);
for (i = 0, N = 0; i < n; i++)
for (j = 0; j < n; j++)
if (i != j){
x1 = v[i].x + v[i].y - v[j].y;
y1 = v[i].y - v[i].x + v[j].x;
x2 = v[j].x - v[j].y + v[i].y;
y2 = v[j].x + v[j].y - v[i].x;
if (Is(x1, y1) && Is(x2, y2)) N++;
}
printf("%d", N / 4);
}