2002でレッツゴー(3)

Ozyさんが書いたコード(http://d.hatena.ne.jp/Ozy/20060523)を一部参考に、
自分の書いたコードを全体的に書き直してみた。
ただ、Ozyさんが言うように、どこまでも削れそうな気がしてならない。
結果としてすんごい疲れる(;´Д`)
今日はこの辺でやめておこう。

p(int*p,int*q){return*p-*q;}
short s[2006],c[2];
m,a,n,f,g,o,r;
t(x,y){
	*c=r+x/2;c[1]=o+y/2;
	return~x%2*bsearch(c,s,n,4,p);
}
main(b){
	for(;scanf("%d",&n),n;printf("%d\n",m/2)){
		for(a=m=n*2;m;)scanf("%hd",s+--m);
		for(qsort(s,n,4,p);a;)
			for(o=s[--a],r=s[b=--a];b;
				m+=t(f-g,g+f)&&t(f+g,g-f))
				g=s[--b]-o,f=s[--b]-r;
	}
}