#G00005. Chuyển thang máy (Lift Hopping)

    ID: 69 Loại: Thông thường 1000ms 256MiB Tried: 1 Đã chấp nhận: 1 Độ khó: 1 Đăng bởi: Nhãn>Shortest PathsDijkstraGraph BasicsWeighted graphsGraph representationData StructuresPriority queueSorting and SearchingCoordinate compression

Chuyển thang máy (Lift Hopping)

Chuyển thang máy (Lift Hopping)

Nguồn: UVa Online Judge

Phiên bản: Phước Hưng OJ Extended

Đề bài

Một tòa nhà có nhiều tầng, được đánh số bằng các số nguyên không âm.

Tòa nhà có nn thang máy. Mỗi thang máy có tốc độ riêng và chỉ dừng tại một số tầng nhất định.

Với thang máy thứ ii, thời gian cần để di chuyển giữa hai tầng kề nhau là TiT_i giây. Do đó, nếu thang máy thứ ii di chuyển trực tiếp từ tầng xx đến tầng yy, thời gian di chuyển là

∣x−y∣⋅Ti|x-y|\cdot T_i

giây.

Bạn đang đứng tại tầng 00 và muốn đến tầng kk trong thời gian ngắn nhất.

Mỗi thang máy chỉ có thể được sử dụng tại các tầng mà nó dừng. Khi đang ở trong một thang máy, bạn có thể đi qua các tầng trung gian mà không cần dừng lại tại đó.

Ví dụ, nếu một thang máy dừng tại các tầng

0,5,10,20,0,5,10,20,

thì bạn có thể đi trực tiếp từ tầng 00 đến tầng 2020. Thang máy có thể đi qua các tầng 1,2,…,191,2,\ldots,19, nhưng bạn chỉ có thể lên hoặc xuống tại các tầng được liệt kê trong danh sách điểm dừng của nó.

Nếu đang ở một tầng mà cả hai thang máy đều dừng, bạn có thể chuyển từ thang máy hiện tại sang thang máy kia. Mỗi lần chuyển từ một thang máy sang một thang máy khác mất đúng 6060 giây.

Khi bắt đầu tại tầng 00, bạn có thể lên bất kỳ thang máy nào dừng tại tầng 00 mà không mất 6060 giây. Chi phí 6060 giây chỉ được tính khi bạn thực sự chuyển từ một thang máy sang một thang máy khác trong quá trình di chuyển.

Bạn không được sử dụng cầu thang bộ.

Để được xem là đã đến tầng kk, bạn phải xuống tại tầng kk từ một thang máy có điểm dừng tại tầng này. Việc một thang máy chỉ đi ngang qua tầng kk nhưng không dừng tại đó không được xem là đã đến đích.

Nếu k=0k=0, bạn đã đứng tại tầng cần đến ngay từ đầu, vì vậy thời gian cần thiết bằng 00.

Hãy tìm số giây nhỏ nhất cần thiết để đi từ tầng 00 đến tầng kk.

Input

  • Dòng đầu chứa hai số nguyên nn và kk:

    • nn là số lượng thang máy;
    • kk là tầng cần đến.
  • Dòng thứ hai chứa nn số nguyên

T1,T2,…,Tn,T_1,T_2,\ldots,T_n,

trong đó TiT_i là số giây mà thang máy thứ ii cần để di chuyển qua một tầng.

  • Trong nn dòng tiếp theo, dòng thứ ii chứa danh sách các tầng mà thang máy thứ ii dừng.

Các tầng trên mỗi dòng được liệt kê theo thứ tự tăng dần và cách nhau bởi dấu cách.

Số lượng tầng dừng của mỗi thang máy không được ghi riêng trong Input; số lượng này chính là số số nguyên xuất hiện trên dòng tương ứng.

Ví dụ, dòng

0 5 10 12 14 20 25 30

có nghĩa là thang máy tương ứng dừng tại đúng 88 tầng:

0,5,10,12,14,20,25,30.0,5,10,12,14,20,25,30.

Một tầng có thể xuất hiện trong danh sách của nhiều thang máy. Khi đó, tầng này có thể được sử dụng làm nơi chuyển thang.

Output

In ra đúng một dòng.

  • Nếu có thể đi từ tầng 00 đến tầng kk, in ra số giây nhỏ nhất cần thiết.
  • Nếu không tồn tại cách di chuyển hợp lệ, in ra:
IMPOSSIBLE

Subtask

Gọi sis_i là số tầng dừng của thang máy thứ ii và đặt

M=∑i=1nsi.M=\sum_{i=1}^{n}s_i.

Như vậy, MM là tổng số điểm dừng được liệt kê trong toàn bộ Input.

  • Subtask 1 — 15% — Time Limit: 0.50 giây: n=1n=1; 0≤k≤1090\le k\le10^9; 1≤T1≤1001\le T_1\le100; mọi tầng dừng thuộc [0,109][0,10^9]; M≤2⋅105M\le2\cdot10^5.
  • Subtask 2 — 20% — Time Limit: 1.00 giây: 1≤n≤1001\le n\le100; 0≤k≤990\le k\le99; 1≤Ti≤1001\le T_i\le100; mọi tầng dừng thuộc [0,99][0,99]; M≤104M\le10^4.
  • Subtask 3 — 25% — Time Limit: 1.50 giây: 1≤n≤30001\le n\le3000; 0≤k≤1090\le k\le10^9; 1≤Ti≤1001\le T_i\le100; mọi tầng dừng thuộc [0,109][0,10^9]; M≤3000M\le3000.
  • Subtask 4 — 40% — Time Limit: 3.00 giây: 1≤n≤2⋅1051\le n\le2\cdot10^5; 0≤k≤1090\le k\le10^9; 1≤Ti≤1001\le T_i\le100; mọi tầng dừng thuộc [0,109][0,10^9]; M≤2⋅105M\le2\cdot10^5.

Ví dụ

Ví dụ 1

Input

2 30
10 5
0 1 3 5 7 9 11 13 15 20 99
4 13 15 19 20 25 30

Output

275

Giải thích

Có hai thang máy.

Thang máy thứ nhất:

  • mất 1010 giây cho mỗi tầng;
  • dừng tại các tầng
0,1,3,5,7,9,11,13,15,20,99.0,1,3,5,7,9,11,13,15,20,99.

Thang máy thứ hai:

  • mất 55 giây cho mỗi tầng;
  • dừng tại các tầng
4,13,15,19,20,25,30.4,13,15,19,20,25,30.

Một cách di chuyển tối ưu là:

  1. Lên thang máy thứ nhất tại tầng 00.
  2. Đi từ tầng 00 đến tầng 1313.
  3. Chuyển sang thang máy thứ hai tại tầng 1313.
  4. Đi từ tầng 1313 đến tầng 3030.

Thời gian đi từ tầng 00 đến tầng 1313 bằng thang máy thứ nhất là

13⋅10=13013\cdot10=130

giây.

Tầng 1313 xuất hiện trong danh sách điểm dừng của cả hai thang máy nên có thể chuyển thang tại đây. Việc chuyển thang mất

6060

giây.

Khoảng cách từ tầng 1313 đến tầng 3030 là 1717 tầng, nên thời gian đi bằng thang máy thứ hai là

17⋅5=8517\cdot5=85

giây.

Tổng thời gian:

130+60+85=275.130+60+85=275.

Vì vậy đáp án là 275.

Ví dụ 2

Input

2 30
10 1
0 5 10 12 14 20 25 30
2 4 6 8 10 12 14 22 25 28 29

Output

285

Giải thích

Có thể thực hiện hành trình sau:

  1. Đi bằng thang máy thứ nhất từ tầng 00 đến tầng 1010.
  2. Chuyển sang thang máy thứ hai tại tầng 1010.
  3. Đi bằng thang máy thứ hai từ tầng 1010 đến tầng 2525.
  4. Chuyển lại sang thang máy thứ nhất tại tầng 2525.
  5. Đi bằng thang máy thứ nhất từ tầng 2525 đến tầng 3030.

Từ tầng 00 đến tầng 1010 bằng thang máy thứ nhất mất

10⋅10=10010\cdot10=100

giây.

Chuyển thang tại tầng 1010 mất 6060 giây.

Từ tầng 1010 đến tầng 2525 bằng thang máy thứ hai mất

15⋅1=1515\cdot1=15

giây.

Chuyển thang tại tầng 2525 mất thêm 6060 giây.

Cuối cùng, đi từ tầng 2525 đến tầng 3030 bằng thang máy thứ nhất mất

5⋅10=505\cdot10=50

giây.

Tổng cộng:

100+60+15+60+50=285.100+60+15+60+50=285.

Vì vậy đáp án là 285.

Ví dụ 3

Input

3 50
10 50 100
0 10 30 40
0 20 30
0 20 50

Output

3920

Giải thích

Một hành trình tối ưu là:

  1. đi bằng thang máy thứ nhất từ tầng 00 đến tầng 3030;
  2. chuyển sang thang máy thứ hai tại tầng 3030;
  3. đi từ tầng 3030 xuống tầng 2020;
  4. chuyển sang thang máy thứ ba tại tầng 2020;
  5. đi từ tầng 2020 lên tầng 5050.

Thang máy thứ nhất mất

30⋅10=30030\cdot10=300

giây.

Sau đó chuyển thang tại tầng 3030, mất 6060 giây.

Thang máy thứ hai đi từ tầng 3030 xuống tầng 2020, quãng đường 1010 tầng, mất

10⋅50=50010\cdot50=500

giây.

Tiếp tục chuyển thang tại tầng 2020, mất thêm 6060 giây.

Cuối cùng, thang máy thứ ba đi từ tầng 2020 đến tầng 5050, quãng đường 3030 tầng, mất

30⋅100=300030\cdot100=3000

giây.

Tổng thời gian là

300+60+500+60+3000=3920.300+60+500+60+3000=3920.

Do đó đáp án là 3920.

Ví dụ 4

Input

1 1
2
0 2 4 6 8 10

Output

IMPOSSIBLE

Giải thích

Chỉ có một thang máy và nó dừng tại các tầng

0,2,4,6,8,10.0,2,4,6,8,10.

Tầng cần đến là tầng 11.

Mặc dù thang máy đi qua tầng 11 khi di chuyển từ tầng 00 đến tầng 22, nó không dừng tại tầng 11. Vì vậy bạn không thể xuống tại tầng này.

Không có thang máy nào khác và cũng không được sử dụng cầu thang bộ, nên không thể đến tầng 11.

Do đó kết quả là IMPOSSIBLE.