Pagini recente » Cod sursa (job #671951) | Cod sursa (job #496316) | Cod sursa (job #509161) | Cod sursa (job #2043816) | Cod sursa (job #559211)
Cod sursa(job #559211)
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
FILE*fin,*fout;
int i,j,n,t,k,nr;
double xm,ym,x2,l,y2;
struct p{
double x,y;
}a[1501];
int cmp(const void*a,const void*b){
if((*(p*)a).x==(*(p*)b).x){
return (*(p*)a).y-(*(p*)b).y;
}
return (*(p*)a).x-(*(p*)b).x;
}
int caut (int p,int u){
int m,k,ok;
while(p<=u){ ok=1;
m=(p+u)/2;
if(a[m].x-x2<=0.001){
if(a[m].y-y2<=0.001){ return 1;}
/*k=m+1;
while(a[k].x-a[m].x<=0.001&&k<=n){
if(a[k].y-y2<=0.001){return 1;}
k++;}
k=m-1;
while(a[k].x-a[m].x<=0.001&&k>1){
if(a[k].y-y2<=0.001){return 1;}
k--;}*/
}
else if(a[m].x>x2){u=m-1;}
else if(a[m].x<x2){p=m+1;}
}
return 0;
}
int abs2(int x){
if(x<0){return -x;}
else{return x;}
}
int main(){
fin=fopen("triang.in","r");
fout=fopen("triang.out","w");
fscanf(fin,"%d ",&n);
for(i=1;i<=n;i++){
fscanf(fin,"%lf %lf",&a[i].x,&a[i].y);
}
qsort(a+1,n,sizeof(p),cmp);
for(i=1;i<=n;i++){
for(j=i+1;j<=n;j++){
xm=(a[i].x+a[j].x)/2;
ym=(a[j].x+a[i].y)/2;
l=(a[j].x-a[i].x)*(a[j].x-a[i].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y);
x2=xm+(sqrt(l)*sqrt(15))/5;
y2=ym-(sqrt(l)*sqrt(15))/10;
y2=abs2(y2);
if(caut(j+1,n)==1){nr++;}
}
}
fprintf(fout,"%d",nr);
return 0;
}