Ổ cứng

Xem dạng PDF

Gửi bài giải

Điểm: 100,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Người đăng:
Nguồn bài:
CSLOJ
Dạng bài
Ngôn ngữ cho phép
C++, Pascal, Python

Ổ đĩa cứng của Linda làm việc rất chậm. Là một chuyên gia về máy tính, cô quyết định thay thế một đầu đọc ổ đĩa bởi ~n~ đầu đọc ổ đĩa làm việc đồng thời. Có thể hình dung ổ đĩa của Linda như là một dãy các track, mỗi track có thể xem như là một ô chứa dữ liệu. Các track được đánh số từ trái sang phải bắt đầu từ ~1~. Ở vị trí khởi điểm, đầu đọc thứ ~i~ đặt ở track có số hiệu ~h_i~. Trong quá trình đọc, trong một đơn vị thời gian, các đầu đọc có thể di chuyển sang trái, sang phải đúng một track hoặc đứng yên ở vị trí track hiện tại. Sự chuyển động của các đầu đọc không ảnh hưởng đến nhau: có thể có nhiều đầu đọc cùng ở trên một track và vị trí tương đối của các đầu đọc có thể thay đổi. Khi có ít nhất một đầu đọc ở trên một track thì dữ liệu ở track này được đọc ngay lập tức (thời gian đọc bằng ~0~). Vị trí xuất phát của ~n~ đầu đọc là ~h_1, h_2, …, h_n~. Linda cần phải đọc dữ liệu ở ~m~ track có số hiệu ~p_1, p_2, …, p_m~. Hãy xác định thời gian tối thiểu để các đầu đọc hoàn thành công việc này.

Input

Dòng đầu tiên chứa hai số nguyên dương ~n, m ≤ 10^5~ là số đầu đọc và số track cần đọc

Dòng thứ hai chứa ~n~ số nguyên ~h_1, h_2, …, h_n~ - vị trí khởi đầu của các đầu đọc (~1 ≤ h_i ≤ 10^{10}~)

Dòng thứ ba chứa ~m~ số nguyên ~p_1, p_2, …, p_m~ - danh sách các track cần đọc (~1 ≤ p_i ≤ 10^{10}~)

Output

Một số nguyên duy nhất là thời gian tối thiểu để đọc hết các track

Sample

Input 1
3 4
2 5 6
1 3 6 8
Output 1
2
Input 2
1 2
165
142 200
Output 2
81