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] Đĩa quay — seek + rotational latency

    Tính tổng thời gian đọc một dãy yêu cầu trên một đĩa quay, gồm thời gian tìm kiếm (seek) và thời gian quay trễ (rotational latency).

    Tham số đĩa:

    • Thời gian seek = s (ms) cho MỖI bước dịch chuyển 1 rãnh (track). Đầu đọc bắt đầu ở rãnh start.
    • Đĩa quay với tốc độ: một vòng quay mất R (ms). Mỗi rãnh có K sector đánh số 0..K−1; đầu đọc giả định đang ở sector 0 mỗi khi vừa dịch tới một rãnh mới (đề đơn giản hoá).

    Mỗi yêu cầu gồm (track, sector). Xử lý lần lượt theo thứ tự cho trước:

    1. Seek: từ rãnh hiện tại tới track, mất |track − cur_track| · s ms. Sau khi seek tới rãnh mới, đầu đọc ở sector 0. (Nếu cùng rãnh với yêu cầu trước thì không seek; vị trí sector giữ nguyên ở sector vừa đọc xong + 0... để đơn giản, MỖI yêu cầu sau seek/không seek đều coi đầu đọc bắt đầu chờ từ sector 0 nếu có seek; nếu KHÔNG seek thì bắt đầu từ sector hiện tại.)
    2. Rotational latency: thời gian quay từ sector hiện tại tới sector đích. Một sector quét mất R/K ms. Số sector phải quay = (sector − cur_sector + K) mod K. Sau khi đọc, cur_sector = sector.

    Quy ước: ban đầu cur_track = start, cur_sector = 0.

    In ra tổng thời gian với 2 chữ số thập phân (ms).

    Ví dụ: s=1, R=8, K=4, start=0. Yêu cầu (2,1),(2,3). Seek 0->2 = 2ms, tới sector0. Quay tới sector1 = 1·(8/4)=2ms (cur_sec=1). Yêu cầu 2: cùng rãnh không seek; quay từ 1 tới 3 = 2·2=4ms. Tổng=2+2+4=8.00.

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

      Dòng đầu: s R K start. Dòng tiếp: N (số yêu cầu). Tiếp theo N cặp (track sector).

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

      0 < s, R ≤ 1000; 1 ≤ K ≤ 1000; 0 ≤ start, track ≤ 10^6; 0 ≤ sector < K; 1 ≤ N ≤ 100000.

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

      Một số thực: tổng thời gian (ms), 2 chữ số thập phân.

    Ví dụ:

    Đầu vào:

    1 8 4 0
    2
    2 1 2 3
    

    Đầu ra:

    8.00

    Giải thích:

    start rãnh 0, sector 0. YC1 (2,1): seek |2-0|·1=2ms tới sector0; quay tới sector1 = 1·(8/4)=2ms. YC2 (2,3): cùng rãnh, quay từ 1->3 = 2·2=4ms. Tổng=2+2+4=8.00.

    Đang tải editor...