Pagini recente » Cod sursa (job #561844) | Cod sursa (job #207750) | Cod sursa (job #1772283) | Cod sursa (job #2842395) | Cod sursa (job #2314249)
#include <bits/stdc++.h>
using namespace std;
ifstream f("patrate3.in");
ofstream g("patrate3.out");
struct punct{
double x,y;
};
punct v[1001];
int n,i,j,k;
int cmp(punct a, punct b)
{
if(a.x<b.x||(a.x==b.x&&a.y<b.y))
return 1;
return 0;
}
int cautbin(punct a)
{
int st,dr,m;
st=1;
dr=n;
while(st<=dr)
{
m=(st+dr)/2;
if(abs(a.x-v[m].x)<0.00001)
{
if(abs(a.y-v[m].y)<0.00001)
return 1;
if(a.y<v[m].y)
dr=m-1;
else
st=m+1;
}
else
{
if(a.x<v[m].x)
dr=m-1;
else
st=m+1;
}
}
return 0;
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
f>>v[i].x>>v[i].y;
sort(v+1,v+n+1,cmp);
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{
punct a,b,m;
m.x=(double)(v[i].x+v[j].x)/2;
m.y=(double)(v[i].y+v[j].y)/2;
a.x=m.x-v[j].y+m.y;
b.x=m.x+v[j].y-m.y;
a.y=m.y+v[j].x-m.x;
b.y=m.y-v[j].x+m.x;
if(cautbin(a)==1&&cautbin(b)==1)
k++;
}
g<<k/2;
}