Pagini recente » Cod sursa (job #369135) | Cod sursa (job #688150) | Cod sursa (job #2443041) | Cod sursa (job #1560290) | Cod sursa (job #2692774)
#include <fstream>
#include<algorithm>
#include <vector>
using namespace std;
ifstream cin("patrate3.in");
ofstream cout("patrate3.out");
struct punct{
double x,y;
};
struct dreapta
{
punct a,b;
double d;
};
vector<dreapta>v;
vector<punct>f;
int cmp(dreapta a,dreapta b)
{
return (a.d<b.d);
}
int cautare(double val,int st)
{
int dr=v.size()-1;
while(st<=dr)
{
int mj=(st+dr)/2;
if(v[mj].d==val)return 1;
else if(v[mj].d<val)st=mj+1;
else dr=mj-1;
}
return 0;
}
int main()
{
int n,i,j,nr=0,gasit;
punct a;
dreapta aux;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a.x>>a.y;
f.push_back(a);
for(j=0;j<f.size()-1;j++)
{
aux.d=(a.x-f[j].x)*(a.x-f[j].x)+(a.y-f[j].y)*(a.y-f[j].y);
aux.a=a;
aux.b=f[j];
v.push_back(aux);
}
}
sort(v.begin(),v.end(),cmp);
for(i=0;i<v.size();i++)
{
gasit=cautare(v[i].d,i+1);
if(gasit)nr++;
}
cout<<nr;
}