Tìm vị trí ô tô
Xem PDF
Điểm:
15
Thời gian:
3.0s
Bộ nhớ:
256M
Input:
bàn phím
Output:
màn hình
Timur đang di chuyển trên một trục số từ điểm \(0\) đến điểm \(n\) bằng ô tô. Ô tô bắt đầu chuyển động từ điểm \(0\) tại thời điểm phút thứ \(0\).
Trên trục số có \(k + 1\) biển báo tại các điểm \(0, a_1, a_2, \dots, a_k\). Timur biết rằng ô tô sẽ lần lượt đi qua các biển báo này tại các thời điểm tương ứng là phút \(0, b_1, b_2, \dots, b_k\). Các dãy \(a\) và \(b\) là các dãy tăng nghiêm ngặt với \(a_k = n\).
Giữa hai biển báo liền kề bất kỳ, ô tô di chuyển với vận tốc không đổi. Timur có \(q\) truy vấn: mỗi truy vấn là một số nguyên \(d\). Với mỗi truy vấn, hãy tính xem ô tô mất bao nhiêu phút để đến được điểm \(d\), làm tròn xuống số nguyên gần nhất.
Dữ liệu vào
- Dòng đầu tiên chứa một số nguyên \(t\) (\(1 \le t \le 10^4\)) — số lượng bộ dữ liệu (test case).
- Với mỗi test case:
- Dòng đầu tiên chứa ba số nguyên \(n, k, q\) (\(1 \le k, q \le 10^5; k \le n \le 10^9\)) — lần lượt là điểm đến cuối cùng, số lượng biển báo (không tính gốc \(0\)) và số lượng truy vấn.
- Dòng thứ hai chứa \(k\) số nguyên \(a_1, a_2, \dots, a_k\) (\(1 \le a_i \le n; a_i < a_{i+1}; a_k = n\)).
- Dòng thứ ba chứa \(k\) số nguyên \(b_1, b_2, \dots, b_k\) (\(1 \le b_i \le 10^9; b_i < b_{i+1}\)).
- \(q\) dòng tiếp theo, mỗi dòng chứa một số nguyên \(d\) (\(0 \le d \le n\)) — vị trí cần tính thời gian.
- Dữ liệu đảm bảo tổng của \(k\) trên tất cả các test case không vượt quá \(10^5\), và tổng của \(q\) trên tất cả các test case không vượt quá \(10^5\).
Dữ liệu ra
- Với mỗi truy vấn, in ra một số nguyên duy nhất — số phút đã trôi qua cho đến khi ô tô đạt tới điểm \(d\) (đã làm tròn xuống).
Ví dụ
| Input | Output |
|---|---|
| 4 10 1 3 10 10 0 6 7 10 2 4 4 10 4 7 6 4 2 7 1000000000 1 1 1000000000 1000000000 999999999 6 1 3 6 5 2 6 5 |
0 6 7 5 4 2 5 999999999 1 5 4 |
Bình luận