Pagini recente » Cod sursa (job #3128916) | Cod sursa (job #389054) | Cod sursa (job #2739937) | Cod sursa (job #2205602) | Cod sursa (job #1318783)
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
#define Dif 0.0000000001
struct coord
{
double x,y;
}v[1010];
int n,i,j,nr;
bool compar(coord a, coord b)
{
if( fabs(a.x-b.x)<=Dif )
return a.y<b.y;
else
return a.x<b.x;
}
int cautare(coord a)
{
int l,r,mij;
l=1;
r=n;
while(l<=r)
{
mij=(l+r)/2;
if (fabs(v[mij].x-a.x)<=Dif&&fabs(v[mij].y-a.y)<=Dif)
return 1;
else
if (compar(a,v[mij]))
r=mij-1;
else
l=mij+1;
}
return 0;
}
int main()
{
ifstream in("patrate3.in");
ofstream out("patrate3.out");
in>>n;
for(i=1;i<=n;i++)
in>>v[i].x>>v[i].y;
sort(v+1,v+n+1,compar);
nr=0;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{
coord a,b;
a.x = v[i].x + v[i].y - v[j].y;
b.x = v[j].x + v[i].y - v[j].y;
a.y = v[i].y + v[j].x - v[i].x;
b.y = v[j].y + v[j].x - v[i].x;
if(cautare(a)&&cautare(b))
nr++;
}
out<<nr/2;
return 0;
}