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

    solution

    Đề bài: [Hệ điều hành] Lập lịch đĩa C-LOOK

    Thuật toán C-LOOK (Circular LOOK). Đầu đọc bắt đầu ở start, di chuyển theo hướng cho trước (U lên / D xuống). C-LOOK chỉ phục vụ theo MỘT chiều; khi tới yêu cầu xa nhất theo hướng đó, nó nhảy thẳng về yêu cầu xa nhất ở đầu kia (không phục vụ gì trên đường nhảy) rồi tiếp tục phục vụ theo cùng chiều.

    Thuật toán (hướng = U):

    1. Phục vụ các yêu cầu ≥ start theo thứ tự tăng dần (tới lớn nhất).
    2. Nhảy về yêu cầu nhỏ nhất trong toàn bộ (quãng nhảy được tính vào tổng quãng đường).
    3. Phục vụ tiếp các yêu cầu < start theo thứ tự tăng dần.

    Hướng = D đối xứng (phục vụ giảm dần ≤ start, nhảy lên yêu cầu lớn nhất, phục vụ giảm dần phần còn lại).

    In ra tổng quãng đường di chuyển (kể cả quãng nhảy vòng).

    Ví dụ: start=50, U, yêu cầu [82,170,43,140,24,16,190]. Đi lên 82..190, nhảy về 16, đi 16->24->43. Tổng=(190-50)+(190-16)+(43-16)=140+174+27=341.

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

      Dòng đầu: start hướng N. Dòng tiếp: N vị trí yêu cầu.

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

      0 ≤ start ≤ 10^9; 1 ≤ N ≤ 100000; 0 ≤ vị trí ≤ 10^9.

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

      Một số nguyên: tổng quãng đường di chuyển (kể cả quãng nhảy vòng).

    Ví dụ:

    Đầu vào:

    50 U 7
    82 170 43 140 24 16 190
    

    Đầu ra:

    341

    Giải thích:

    Hướng lên: phục vụ 82,140,170,190; nhảy về nhỏ nhất 16; phục vụ 16,24,43. Tổng=(190-50)+(190-16)+(43-16)=140+174+27=341.

    Đang tải editor...