Pagini recente » Cod sursa (job #1365918) | Cod sursa (job #628030) | Borderou de evaluare (job #1036160) | Cod sursa (job #3240845) | Cod sursa (job #1247594)
#include<cstdio>
#include<cmath>
#include<algorithm>
#define eps 0.0000001
using namespace std;
struct pct{
double x;
double y;
}v[10100];
int n,i,j,s;
double x,y,x2,y2,x3,y3,d=sqrt(3);
FILE *f,*g;
int cmp(pct a,pct b){
if(a.x!=b.x)
return a.x<b.x;
return a.y<b.y;
}
double mod(double a){
if(a<0)
return -a;
return a;
}
void cbin(double x,double y){
int p=j+1,u=n,mid;
while(p<=u){
mid=(p+u)/2;
if(v[mid].x<x)
p=mid+1;
else{
if(v[mid].x>x)
u=mid-1;
else{
if(v[mid].y<y)
p=mid+1;
else
u=mid+1;
}
}
}
if(mod(x-v[p].x)<eps&&mod(y-v[p].y)<eps)
s++;
}
int main(){
f=fopen("triang.in","r");
g=fopen("triang.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++){
fscanf(f,"%lf%lf",&v[i].x,&v[i].y);
}
sort(v+1,v+n+1,cmp);
for(i=1;i<=n-2;i++){
x=v[i].x;
y=v[i].y;
for(j=i+1;j<=n-1;j++){
x2=v[j].x;
y2=v[j].y;
x3=(x+x2)/2+d*(y-y2)/2;
y3=(y+y2)/2+d*(x2-x)/2;
cbin(x3,y3);
x3=(x+x2)/2+d*(y2-y)/2;
y3=(y+y2)/2+d*(x-x2)/2;
cbin(x3,y3);
}
}
fprintf(g,"%d",s);
fclose(f);
fclose(g);
return 0;
}