PKU 3432 Count Squares

http://poj.org/problem?id=3432
n個のxy座標が与えられるので、それから構成されうる正方形の数を数えるというような問題。
AOJに似たようなものがありました。

set<PI> app;

main(){
  int n;
  cin>>n;
  rep(i,n){
    int x,y;
    cin>>x>>y;
    app.insert(mp(x,y));
  }
  int ans=0;
  FOR(siter,app){
    FOR(siter2,app){
      if(siter==siter2)continue;
      int x1=siter->F,y1=siter->S,x2=siter2->F,y2=siter2->S;
      if(app.count(mp(x1-(y2-y1),y1+(x2-x1))) && app.count(mp(x2-(y2-y1),y2+(x2-x1))))++ans;
    }
  }
  cout<<ans/4<<endl;   
}