Pagini recente » Cod sursa (job #839103) | Cod sursa (job #1577506) | Cod sursa (job #2171217) | Cod sursa (job #56520) | Cod sursa (job #2002211)
#include <bits/stdc++.h>
#define EPS 0.001
#define LMAX 1505
using namespace std;
int n,no=0;
struct Nodea{
double x,y;
}v[LMAX],k;
inline bool egale(double x,double y){
return fabs(x-y)<EPS;
}
inline bool cmp(Nodea A,Nodea B){
return (egale(A.x,B.x)&&A.y<B.y)||(A.x<B.x);
}
inline void bSearch(Nodea k){
int st=1,dr=n;
while(st<=dr){
int mij=(st+dr)/2;
if(egale(v[mij].x,k.x)&&egale(v[mij].y,k.y)){
++no;
return;
}
else if(v[mij].x>k.x||(egale(v[mij].x,k.x)&&v[mij].y>k.y))
dr=mij-1;
else st=mij+1;
}
}
int main(){
freopen("triang.in","r",stdin);
freopen("triang.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%lf%lf",&v[i].x,&v[i].y);
sort(v+1,v+n+1,cmp);
for(int i=1;i<=n-1;++i)
for(int j=i+1;j<=n;++j){
double Ox=v[j].x-v[i].x,Oy=v[j].y-v[i].y;
// sol 1
k.x=v[i].x+(Ox-sqrt(3)*Oy)/2;
k.y=v[i].y+(Oy+sqrt(3)*Ox)/2;
bSearch(k);
// sol 2
k.x=v[i].x+(Ox+sqrt(3)*Oy)/2;
k.y=v[i].y+(Oy-sqrt(3)*Ox)/2;
bSearch(k);
}
printf("%d\n",no/3);
fclose(stdin);fclose(stdout);
return 0;
}