canuc80k0545·46/50

Chi Phí Đưa Về Cùng Mốc

Nộp bài trên LQDOJ

Bài 05 · Binary Search

Cho dãy . Một thao tác tăng hoặc giảm một phần tử đúng .

Với mỗi truy vấn , hãy tính số thao tác tối thiểu để đưa tất cả phần tử về đúng . Các truy vấn độc lập, nên dãy ban đầu không thay đổi. Kết quả bằng tổng .

Input

  • Dòng đầu chứa .
  • Dòng thứ hai chứa số .
  • dòng tiếp theo, mỗi dòng chứa .

Output

  • Với mỗi truy vấn, in tổng chi phí trên một dòng.

Constraints

  • .
  • .

Scoring

  • Subtask ( điểm): .
  • Subtask ( điểm): không có giới hạn bổ sung.

Example

Test 1

Input

3 3
1 4 8
0
5
10

Output

13
8
17

Giải thích: Với , ba khoảng cách là , tổng . Hai truy vấn còn lại cho tổng lần lượt và .

Lời giải tóm tắt
  • Ý tưởng: Sắp a và lập tổng tiền tố p. Với truy vấn x, đặt k=lower_bound(a,x). Phía trái có chi phí x·k-p_k; phía phải có chi phí (p_n-p_k)-x·(n-k). Hai nhóm phủ toàn bộ dãy, nên tổng hai công thức là đáp án. Mọi phép tính phải dùng 64 bit.
  • Ý tưởng: Độ phức tạp: O(n log n+q log n) thời gian và O(n) bộ nhớ.