Pagini recente » Cod sursa (job #2943002) | Cod sursa (job #1445000) | Cod sursa (job #1915411) | Cod sursa (job #2939322) | Cod sursa (job #3222171)
#include <fstream>
#include <algorithm>
#define x first
#define y second
using namespace std;
ifstream fin ("patrate3.in");
ofstream fout ("patrate3.out");
int n,i,j,nrc;
pair <long long,long long> v[1001];
long long ok,x,y,xm,ym,x1,y1,x2,y2,a,b;
char s1[30],s2[30];
bool cb (pair <long long,long long> p)
{
int st=1,dr=n,mij;
while (st<=dr)
{
mij=(st+dr)/2;
if (v[mij]==p)
return 1;
if (v[mij]>p)
st=mij+1;
else
dr=mij-1;
}
return 0;
}
int main()
{
fin>>n;
for (i=1; i<=n; i++)
{
fin>>s1>>s2;
x=0;
ok=1;
for (j=0; s1[j]; j++)
{
if (s1[j]=='-')
{
ok=-1;
continue;
}
if (s1[j]=='.')
continue;
x=x*10+s1[j]-'0';
}
x*=ok;
y=0;
ok=1;
for (j=0; s2[j]; j++)
{
if (s2[j]=='-')
{
ok=-1;
continue;
}
if (s2[j]=='.')
continue;
y=y*10+s2[j]-'0';
}
y*=ok;
x*=10;
y*=10;
v[i]=make_pair (x,y);
}
sort (v+1,v+n+1);
reverse (v+1,v+n+1);
for (i=1; i<=n; i++)
{
for (j=i+1; j<=n; j++)
{
if (v[i].x>=v[j].x&&v[i].y>v[j].y)
{
xm=(v[i].x+v[j].x)/2;
ym=(v[i].y+v[j].y)/2;
a=v[i].x-xm;
b=v[i].y-ym;
x1=xm-b;
y1=ym+a;
x2=xm+b;
y2=ym-a;
if (cb (make_pair (x1,y1))&&cb (make_pair (x2,y2)))
nrc++;
}
}
}
fout<<nrc;
return 0;
}