Pagini recente » Cod sursa (job #462569) | Cod sursa (job #2422372) | Cod sursa (job #2436085) | Cod sursa (job #2038528) | Cod sursa (job #1140437)
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
struct pct{
int x;
int y;
}v[1010];
int n,i,j,x1,yy1,x2,yy2,xp,yp,p,u,mid,ok,nr,semn,l,a;
char s[1000];
int cmp(pct a,pct b){
if(a.x==b.x)
return a.y<b.y;
return a.x<b.x;
}
FILE *f,*g;
int main(){
f=fopen("patrate3.in","r");
g=fopen("patrate3.out","w");
fscanf(f,"%d\n",&n);
for(i=1;i<=n;i++){
fgets(s,100,f);
l=strlen(s);
j=0;
x1=0;
semn=1;
while(j<l){
if(s[j]=='-')
semn=-1;
else if(s[j]>='0'&&s[j]<='9')
x1=x1*10+s[j]-'0';
else if(s[j]==' '){
a=x1*semn;
semn=1;
x1=0;
}
j++;
}
v[i].x=a*2;
v[i].y=x1*semn*2;
}
sort(v+1,v+n+1,cmp);
for(i=1;i<n;i++){
for(j=i+1;j<=n;j++){
xp=(v[i].x+v[j].x)/2;
yp=(v[i].y+v[j].y)/2;
x1=xp-(v[j].y-yp);
yy1=yp+(xp-v[i].x);
x2=xp+(v[j].y-yp);
yy2=yp-(xp-v[i].x);
ok=1;
p=1;
u=n;
while(p<=u){
mid=(p+u)/2;
if(v[mid].x>x1)
u=mid-1;
else if(v[mid].x<x1)
p=mid+1;
else if(v[mid].y>yy1)
u=mid-1;
else
p=mid+1;
}
if(v[u].x!=x1||v[u].y!=yy1)
ok=0;
p=1;
u=n;
while(p<=u){
mid=(p+u)/2;
if(v[mid].x>x2)
u=mid-1;
else if(v[mid].x<x2)
p=mid+1;
else if(v[mid].y>yy2)
u=mid-1;
else
p=mid+1;
}
if(v[u].x!=x2||v[u].y!=yy2)
ok=0;
if(ok==1)
nr++;
}
}
fprintf(g,"%d",nr/2);
fclose(f);
fclose(g);
return 0;
}