class Solution {
public:
int findMinArrowShots(vector<pair<int, int>>& points) {
if(points.empty()) return 0;
sort(points.begin(), points.end());
int pre_end = points[0].second;
int res = 1;
for(int i=1;i<points.size();i++){
if(points[i].first<=pre_end){
pre_end = min(pre_end, points[i].second);
}else{
pre_end = points[i].second;
res++;
}
}
return res;
}
};