canuc80k7900·1/15

Điểm Cân Bằng

Nộp bài trên LQDOJ

Bài 79 · Slope Trick

Ban đầu hàm bằng trên mọi số nguyên. Thực hiện lần lượt các truy vấn cộng vào hàm hoặc hỏi số nguyên nhỏ nhất làm hàm đạt giá trị nhỏ nhất cùng giá trị nhỏ nhất ấy.

Input

  • Dòng đầu chứa số truy vấn .
  • Mỗi truy vấn là hoặc ; truy vấn đầu tiên luôn thuộc loại .

Output

  • Với mỗi truy vấn loại , in , trong đó là số nguyên nhỏ nhất đạt cực tiểu.

Constraints

  • .
  • .
  • Truy vấn đầu tiên có dạng .
  • Các trường hợp ngữ nghĩa quan trọng:
    • : Chỉ có một điểm được thêm rồi truy vấn. Điểm đó là nghiệm và hằng là giá trị nhỏ nhất.
    • : Nhiều điểm trùng nhau. Trung vị và tổng độ lệch phải xử lý đúng số lần lặp.
    • : Có cả âm và dương. Các hằng số chỉ thay đổi giá trị cực tiểu, không đổi vị trí.
    • : Số điểm chẵn tạo một đoạn nghiệm. Phải in đầu trái, tức số nguyên nhỏ nhất của đoạn nghiệm.

Scoring

  • Subtask ( điểm): test đầu có kích thước nhỏ, phù hợp với lời giải vét cạn mô tả trong tài liệu.
  • Subtask ( điểm): Không có giới hạn bổ sung.

Example

Test 1

Input

5
1 4 3
1 8 -1
2
1 2 5
2

Output

4 6
4 13

Giải thích: Sau hai lần thêm, mọi số nguyên từ đến cùng cho giá trị nên chọn . Khi thêm điểm , trung vị nhỏ nhất trở thành và giá trị cực tiểu tăng thành .

Lời giải tóm tắt
  • Phân tích: Hai heap lưu hai nửa của đa tập điểm đã thêm. Đỉnh heap trái là trung vị nhỏ nhất; mỗi lần cân bằng sai phía, khoảng dịch được cộng vào giá trị cực tiểu, còn b được cộng trực tiếp. Đây là biểu diễn hàm lồi/lõm theo breakpoint thay vì lưu mọi giá trị trạng thái.
  • Thuật toán: Thực hiện đúng phép cập nhật nêu trên theo thứ tự dữ liệu vào. Mọi tổng chi phí hoặc lợi nhuận dùng số nguyên 64 bit.
  • Chứng minh: Invariant của cấu trúc dữ liệu trùng với sai phân của hàm quy hoạch động sau mỗi phần tử. Mỗi thao tác chỉ thay đổi đúng các breakpoint bị tác động và cập nhật phần hằng bằng đúng mức tăng hoặc giảm của cực trị. Quy nạp theo số phần tử cho thấy trạng thái cuối biểu diễn đúng toàn bộ phương án hợp lệ, nên giá trị in ra là tối ưu.
  • Độ phức tạp: Mỗi cập nhật mất O(log Q), mỗi truy vấn mất O(1), bộ nhớ O(Q).