Người lái thuyền

Xem PDF

Điểm: 100 Thời gian: 1.0s Bộ nhớ: 256M Input: VILLAGES.INP Output: VILLAGES.OUT

VILLAGES

Trên một đất nước xa xôi, có một dòng sông lớn và một số ngôi làng nằm cạnh bên nó. Các làng được đánh số từ 0 đến M dọc theo dòng sông. Khoảng cách giữa hai ngôi làng liên tiếp là đúng 1 km.
Bình sống trong một ngôi làng có số hiệu là 0. Anh là người chuyên chở người giữa các ngôi làng bằng thuyền của mình. Hôm nay, Bình sẽ di chuyển từ ngôi làng của anh đến làng M và anh ấy cũng chở một số người dọc theo con sông này.
Có N người mà muốn đi thuyền ngày hôm nay. Và mỗi người trong họ đều có một điểm bắt đầu và kết thúc. Đặc biệt, thuyền anh ấy có thể chở một số lượng tùy ý.
Chẳng hạn, người A muốn di chuyển từ làng 2 đến làng 8, và người B từ 6 đến 4. Do Bình luôn xuất phát từ làng 0 và đón người A ở làng 2, tiếp đến làng 6 để đón B và quay lại 4 trả B rồi đi đến 8 trả A, và cuối cùng đi đến làng M.
Hãy viết chương trình số Km ít nhất mà Bình cần phải đi để có thể dưa tất cả mọi người từ điểu xuất phát đến đích.

Input

  • Dòng đầu chứa hai số N và M (1 ≤ N ≤ 300.000,1 ≤ M ≤ \(10^9\)).
  • Mỗi dòng trong N dòng tiếp theo, dòng thứ i chứa hai số (s_i,t_i) thể
    hiện hai làng bằng đầu và làng cần đến của người thứ i.

Output

• Một số nguyên duy nhất là kết quả cần tìm

Test 1

Input
2 10
2 8
6 4
Output
14

Test 2

Input
8 15
1 12
3 1
3 9
4 2
7 13
12 11
14 11
14 13

Output
27

Ràng buộc:

Subtask1: 30% test N=1;
Subtask2: 30% test N=2;
Subtask2: 40% test còn lại không có ràng buộc gì.


Bình luận

Không có bình luận nào.