--- author: nguyencter tags: Bwpoints title: Bwpoints Solution --- $\Huge\text{Bwpoints Solution}$ ------- :::info 🔗 Links: [Đề bài](https://drive.google.com/file/d/1xo3Y2jTRMNGvepi5bUBIUgQd1CQByaqP/view?usp=sharing) 📌 Tags: `two pointers` ✍️ Writer: nguyencter 📋 Content: [TOC] ::: ----- ## Giới Thiệu Đề Bài Trên trục số thực cho n điểm đen và n điểm trắng hoàn toàn phân biệt. Người ta muốn chọn ra k điểm đen và k điểm trắng để nối mỗi một điểm đen với một điểm trắng sao cho k đoạn thẳng tạo được đôi một không có điểm chung. **Yêu cầu:** Tìm giá trị k lớn nhất. ----- ## Thuật toán $\Large N \leq 10^5$ Đầu tiên ta sắp xếp mảng a và mảng b theo thứ tự tăng dần. Sử dụng 2 con trỏ x và y: đặt con trỏ x vào mảng có phần tử nhỏ nhất là lớn nhất còn con trỏ y thì đặt vào mảng còn lại. Ban đầu vị trí con trỏ x và y đều bằng một. Nếu phần tử ở vị trí con trỏ x lớn hơn hoặc bằng phần tử ở vị trí con trỏ y thì tăng biến kết quả lên một đơn vị đồng thời tăng vị trí con trỏ x và vị trí con trỏ y lên một đơn vị. Ngược lại tăng vị trí con trỏ x lên một đơn vị. Tiếp tục cho đến khi vị trí con trỏ x hoặc vị trí con trỏ y lớn hơn n thì in ra biến kết quả ---- Đpt $O(n)$. Tham khảo code ở [đây](https://github.com/nguyencter/CODE/blob/main/bwpoints.cpp)