Pagini recente » Cod sursa (job #549523) | Cod sursa (job #935516) | Cod sursa (job #1968743) | Cod sursa (job #2813274) | Cod sursa (job #688980)
Cod sursa(job #688980)
#include<fstream>
#include<algorithm>
#include<cmath>
using namespace std;
int i,j,n,rez=0;
pair<double, double> a[2010];
double x,y,val;
int gasit(int x,int y)
{
int st=1,dr=n,mij;
mij=(st+dr)/2;
while(st<=dr)
{
mij=(st+dr)/2;
if(a[mij].first==x&&a[mij].second==y)
return 1;
if(a[mij].first<x)
st=mij+1;
else
dr=mij-1;
}
return 0;
}
int main()
{
FILE *f=fopen("triang.in","r");
FILE *g=fopen("triang.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;++i)
fscanf(f,"%lf%lf",&a[i].first,&a[i].second);
sort(a+1,a+n+1);
double p=3.00;
val=sqrt(p)*0.5;
for(i=1;i<=n;++i)
for(j=i+1;j<=n;++j)
{
x=a[i].first+(a[j].first-a[i].first)*0.5-(a[j].second-a[i].second)*val;
y=a[i].second+(a[j].first-a[i].first)*val-(a[j].second-a[i].second)*0.5;
if(gasit(x,y))
++rez;
x=a[i].first+(a[j].first-a[i].first)*0.5+(a[j].second-a[i].second)*val;
y=a[i].second-(a[j].first-a[i].first)*val+(a[j].second-a[i].second)*0.5;
if(gasit(x,y))
++rez;
}
fprintf(g,"%d\n",rez);
return 0;
}