题意
题比较简单,就是给你一堆平面上的整数点,问你在这些点里有多少个点满足以下条件,即存在4个点,分别x == xi, y < yi ,x == xi, y > yi , x < xi, y == yi ,x > xi, y == yi
思路
很简单,n也很小,但是为了练习stl,我是用了两个容器来做,复杂度O(nlog n)
实现
#include <unordered_map>
#include <iostream>
#include <cmath>
#include <set>
using namespace std ;
typedef pair<int ,int > pii;
#define fi first
#define se second
unordered_map <int , set <int > > mapp1,mapp2;
set <int > :: iterator iter;
pii a[205 ];
int main(){
int n;
cin >>n;
for (int i=0 ;i<n;i++){
cin >>a[i].fi >> a[i].se;
mapp1[a[i].fi].insert(a[i].se);
mapp2[a[i].se].insert(a[i].fi);
}
int ans = 0 ;
for (int i=0 ;i<n;i++){
iter = mapp1[a[i].fi].lower_bound(a[i].se);
if (iter == mapp1[a[i].fi].begin() || iter == --mapp1[a[i].fi].end()){
continue ;
}
iter = mapp2[a[i].se].lower_bound(a[i].fi);
if (iter == mapp2[a[i].se].begin() || iter == --mapp2[a[i].se].end()){
continue ;
}
ans++;
}
cout << ans <<"\n" ;
return 0 ;
}