Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [C] Linked list — Phân hoạch quanh giá trị X giữ thứ tự

    Cho danh sách liên kết đơn nnn phần tử và một giá trị XXX. Hãy sắp xếp lại danh sách sao cho mọi node có giá trị <X< X<X đứng trước mọi node có giá trị ≥X\ge X≥X, đồng thời giữ nguyên thứ tự tương đối giữa các node trong cùng nhóm (stable partition).

    Ví dụ: danh sách 1 → 4 → 3 → 2 → 5 → 2 với X=3X = 3X=3 sẽ thành 1 → 2 → 2 → 4 → 3 → 5.

    Gợi ý: tạo 2 danh sách phụ (less, ge) bằng malloc, sau đó nối lại.

    • Định dạng đầu vào:

      Dòng 1: nnn và XXX. Dòng 2: nnn số nguyên.

    • Ràng buộc đầu vào:

      0≤n≤1050 \le n \le 10^50≤n≤105, ∣ai∣,∣X∣≤109|a_i|, |X| \le 10^9∣ai​∣,∣X∣≤109.

    • Định dạng đầu ra:

      Một dòng gồm nnn số sau khi phân hoạch (nếu n=0n=0n=0 in dòng trống).

    Ví dụ:

    Đầu vào:

    6 3
    1 4 3 2 5 2
    

    Đầu ra:

    1 2 2 4 3 5

    Giải thích:

    Nhóm <3: [1,2,2] giữ thứ tự; nhóm ≥3: [4,3,5] giữ thứ tự.

    Đang tải editor...