#include #include #include #include using namespace std; class Solution{ public: struct Point{ int x; int y; bool operator<(const Point& other) const{ if (x!=other.x)return x x){ for(auto e: x){ cout<<'('< x, vector y){ vector poi; set hor; set ver; int n = x.size(); for(int i = 0 ; i < n ; i++){ poi.push_back({x[i], y[i]}); } sort(poi.begin(), poi.end(), cmp); int cur_x = poi[0].x; int sum_x = 0; Point last_point = poi[0]; hor.insert(last_point); // horizontal for(int i = 1 ; i < n ; i++){ Point cur_p = poi[i]; if(cur_p.x == cur_x){ sum_x += 1; } else{ if(sum_x >= 2) hor.insert(last_point); hor.insert(cur_p); sum_x = 1; cur_x = cur_p.x; } last_point = cur_p; } //vertical sort(poi.begin(), poi.end(), cmp1); int cur_y = poi[0].y; int sum_y = 1; last_point = poi[0]; ver.insert(last_point); for(int i = 1 ; i < n ; i++){ Point cur_p = poi[i]; if(cur_p.y == cur_y){ sum_y += 1; } else{ if(sum_y >= 2) ver.insert(last_point); ver.insert(cur_p); sum_y = 1; cur_y = cur_p.y; } last_point = cur_p; } set rlt; for(const auto& point : ver){ rlt.insert(point); } for(const auto& point : hor){ rlt.insert(point); } return n - rlt.size(); } }; int main(){ Solution *sol = new Solution(); vectorx = {0, 0, 0, 0, 0, 1, 1, 1, 2, -1, -1, -2, -1}; vectory = {-1, 0, 1, 2, -2, 0, 1, -1, 0, 1, -1, 0, 0}; cout<numIdleDrives(x,y)<x1 = {1, 1, 1, 2, 2, 2, 2, 3, 3, 3}; vectory1 = {1, 2, 3, 1, 2, 3, 5, 1, 2, 3}; cout<numIdleDrives(x1,y1)<x2 = {0, -1,0,0,3,5,4,4,4}; vectory2 = {0,0,1,-1,0,0,1,-1,0}; cout<numIdleDrives(x2,y2)<