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:
s (ms) cho MỖI bước dịch chuyển 1 rãnh (track). Đầu đọc bắt đầu ở rãnh start.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:
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.)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.
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).
0 < s, R ≤ 1000; 1 ≤ K ≤ 1000; 0 ≤ start, track ≤ 10^6; 0 ≤ sector < K; 1 ≤ N ≤ 100000.
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:
Đang tải editor...