canuc80k7500·1/20

Giá Trị Thấp Nhất

Nộp bài trên LQDOJ

Bài 75 · Li Chao Tree

Một tập hợp các hàm bậc nhất được duy trì trong suốt quá trình xử lý. Mỗi hàm có dạng , trong đó và là các số nguyên. Ban đầu tập hợp đã có hàm.

Có thao tác được thực hiện theo thứ tự:

  • : thêm hàm vào tập hợp;
  • : tìm giá trị nhỏ nhất của trong tất cả các hàm đang có.

Tập hợp luôn không rỗng khi một thao tác loại được thực hiện.

Input

  • Dòng đầu chứa hai số nguyên và .
  • dòng tiếp theo, mỗi dòng chứa hai số nguyên và , mô tả một hàm ban đầu.
  • dòng cuối mô tả các thao tác theo đúng định dạng ở trên.

Output

  • Với mỗi thao tác loại , in ra một dòng chứa giá trị nhỏ nhất tìm được.

Constraints

  • .
  • .
  • .
  • Mọi đáp án nằm trong miền của số nguyên -bit có dấu.

Scoring

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

Example

Test 1

Input

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

Output

5
1
-5
0

Giải thích: Tại , hai hàm ban đầu cho giá trị và . Sau khi thêm , các giá trị nhỏ nhất tại lần lượt là .

Lời giải tóm tắt
  • Ý tưởng: Mỗi hàm được xem như một đường thẳng. Ta thu thập trước mọi hoành độ xuất hiện trong truy vấn, sắp xếp và loại trùng. Trên tập tọa độ này, cây Li Chao lưu tại mỗi nút một đường đang tốt nhất ở trung điểm. Khi chèn đường mới, so sánh ở đầu trái và trung điểm để biết phần còn có thể thắng nằm ở nhánh nào. Một truy vấn đi theo đường từ gốc tới lá và lấy giá trị nhỏ nhất trong các đường gặp được.
  • Ý tưởng: Tính đúng đắn theo bất biến: sau mỗi lần chèn, với mọi hoành độ trong miền của một nút, đường tốt nhất giữa các đường đã xử lý hoặc nằm ngay tại nút, hoặc nằm trong đúng nhánh mà thuật toán tiếp tục chèn. Vì truy vấn lấy minimum trên toàn bộ đường gốc-lá, nó xét đủ ứng viên có thể tối ưu tại hoành độ đó.
  • Ý tưởng: Độ phức tạp: O((n+q) log q) thời gian và O(q) bộ nhớ.