JOI 2009 - Pizza

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1200 (p) Thời gian: 5.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

JOI Pizza giao bánh pizza dọc theo một tuyến đường vòng khép kín dài \(d\) mét đi qua khu trung tâm thành phố.

Trên tuyến đường có \(n\) cửa hàng \(S_1,S_2,\ldots,S_n\), trong đó \(S_1\) là cửa hàng chính. Lấy vị trí của \(S_1\) làm mốc \(0\). Với \(i\ge 2\), cửa hàng \(S_i\) nằm ở vị trí \(d_i\), nghĩa là đi từ \(S_1\) theo chiều kim đồng hồ một quãng \(d_i\) mét sẽ đến \(S_i\). Các vị trí \(d_2,\ldots,d_n\) đôi một khác nhau.

Vị trí của một địa điểm nhận bánh được biểu diễn bằng số nguyên \(k\) từ \(0\) đến \(d-1\): khoảng cách từ \(S_1\) đến đó khi đi theo chiều kim đồng hồ là \(k\) mét. Khi nhận một đơn hàng, JOI Pizza sẽ làm và giao bánh từ cửa hàng có quãng đường ngắn nhất đến địa điểm nhận bánh để bánh không bị nguội. Người giao bánh chỉ được đi dọc theo tuyến đường vòng, nhưng có thể đi theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ.

Chẳng hạn, hình dưới đây minh họa ví dụ 1. Cửa hàng chính \(S_1\) ở vị trí \(0\), cửa hàng \(S_2\) ở vị trí \(3\), cửa hàng \(S_3\) ở vị trí \(1\). Địa điểm nhận bánh thứ nhất ở vị trí \(4\), địa điểm thứ hai ở vị trí \(6\).

Địa điểm thứ nhất gần cửa hàng \(S_2\) nhất, với quãng đường giao bánh dài \(1\) mét. Địa điểm thứ hai gần cửa hàng \(S_1\) nhất, với quãng đường giao bánh dài \(2\) mét.

Yêu cầu

Cho chiều dài tuyến đường \(d\), số cửa hàng \(n\), số đơn hàng \(m\), vị trí các cửa hàng \(d_2,\ldots,d_n\) và vị trí nhận bánh \(k_1,\ldots,k_m\). Tính tổng quãng đường giao bánh của tất cả các đơn hàng, trong đó mỗi đơn hàng được giao từ cửa hàng gần địa điểm nhận bánh nhất.

Dữ liệu vào

Đọc từ đầu vào chuẩn:

  • Dòng thứ nhất chứa số nguyên \(d\).
  • Dòng thứ hai chứa số nguyên \(n\).
  • Dòng thứ ba chứa số nguyên \(m\).
  • \(n-1\) dòng tiếp theo lần lượt chứa \(d_2,d_3,\ldots,d_n\), mỗi dòng một số nguyên.
  • \(m\) dòng tiếp theo lần lượt chứa \(k_1,k_2,\ldots,k_m\), mỗi dòng một số nguyên.

Dữ liệu ra

Ghi ra đầu ra chuẩn một số nguyên trên một dòng: tổng quãng đường giao bánh nhỏ nhất của tất cả các đơn hàng, tính bằng mét.

Ràng buộc

  • \(2\le d\le 10^9\).
  • \(2\le n\le 100\,000\).
  • \(1\le m\le 10\,000\).
  • \(1\le d_i\le d-1\) với \(2\le i\le n\); các \(d_i\) đôi một khác nhau.
  • \(0\le k_i\le d-1\) với \(1\le i\le m\).
  • Tổng quãng đường cần tìm không vượt quá \(10^9\).
  • Giới hạn thời gian: \(2\) giây.
  • Giới hạn bộ nhớ: \(64\) MB.

Chấm điểm

Bài có \(10\) bộ dữ liệu, mỗi bộ \(2\) điểm, tổng cộng \(20\) điểm.

  • \(40\%\) số điểm (\(8\) điểm) ứng với các bộ dữ liệu thỏa mãn \(n\le 10\,000\).
  • \(40\%\) số điểm (\(8\) điểm) ứng với các bộ dữ liệu mà cả \(d\) và tổng quãng đường cần tìm đều không vượt quá \(1\,000\,000\).

Các điều kiện trên có thể cùng đúng trên một bộ dữ liệu.

Ví dụ

Ví dụ 1

Input
8
3
2
3
1
4
6
Output
3

Ví dụ 2

Input
20
4
4
12
8
16
7
7
11
8
Output
3

Bình luận

Mới nhất
Tải bình luận...

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

Kỳ thi: