Pagini recente » Cod sursa (job #3005095) | Cod sursa (job #2795424) | Cod sursa (job #2955273) | Cod sursa (job #2086519) | Cod sursa (job #2177512)
#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
const double e = 1e-4;
pair<double, double>a[1010];
int n,k,rs;
double y3,x3,y4,x4;
int main() {
ifstream cin("patrate3.in");
ofstream cout("patrate3.out");
cin>>n;
for (int i=1; i<=n; i++) {
cin>>a[i].x>>a[i].y;
}
sort(a+1,a+1+n);
for (int i=1; i<=n; i++) {
for (int j=i+1; j<=n; j++) {
if (a[j].y>a[i].y) y3=a[i].y-(a[j].x-a[i].x), y4=a[j].y-(a[j].x-a[i].x), x3=a[i].x+a[j].y-a[i].y, x4=a[j].x+a[j].y-a[i].y;
else y3=a[i].y+(a[j].x-a[i].x), y4=a[j].y+(a[j].x-a[i].x), x3=a[i].x-(a[j].y-a[i].y), x4=a[j].x-(a[j].y-a[i].y);
int st=j+1, dr=n,mid; bool u=0;
while (st<=dr) {
mid=(st+dr)/2;
if (abs(a[mid].x-x3)<e && abs(a[mid].y-y3)<e) {
u=1; break;
}
if (a[mid].x<x3 || abs(a[mid].x-x3)<e && a[mid].y<y3) st=mid+1;
else dr=mid-1;
}
if (!u) continue;
st=j+1, dr=n,mid; u=0;
while (st<=dr) {
mid=(st+dr)/2;
if (abs(a[mid].x-x4)<e && abs(a[mid].y-y4)<e) {
u=1; break;
}
if (a[mid].x<x4 || abs(a[mid].x-x4)<e && a[mid].y<y4) st=mid+1;
else dr=mid-1;
}
if (u) rs++;
}
}
cout<<rs;
return 0;
}