canuc80k7503·4/20

Hàm Trên Nửa Khoảng

Nộp bài trên LQDOJ

Bài 75 · Li Chao Tree

Mỗi đối tượng gồm một nửa khoảng số nguyên và một hàm bậc nhất . Hàm chỉ được sử dụng tại những hoành độ thỏa .

Ban đầu có đối tượng. Sau đó, thao tác được thực hiện theo thứ tự:

  • : thêm hàm có hiệu lực trên ;
  • : tìm giá trị nhỏ nhất tại trong các hàm có miền hiệu lực chứa .

Nếu không có hàm nào có hiệu lực tại hoành độ truy vấn, hãy in INFINITY.

Input

  • Dòng đầu chứa hai số nguyên và .
  • dòng tiếp theo, mỗi dòng chứa , mô tả một đối tượng 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 giá trị nhỏ nhất tìm được hoặc chuỗi INFINITY.

Constraints

  • .
  • Với mọi đoạn: .
  • .
  • Mọi giá trị hữu hạn cần in nằm trong miền 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

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

Output

3
INFINITY
6
4

Giải thích: Điểm không thuộc nửa khoảng . Tại có hai hàm hợp lệ và giá trị nhỏ hơn là ; tại chỉ hàm thứ hai còn hiệu lực.

Lời giải tóm tắt
  • Ý tưởng: Ta nén mọi hoành độ xuất hiện trong truy vấn. Một hàm có hiệu lực trên [l,r) chỉ cần được đưa vào các nút của cây đoạn phủ phần chỉ số truy vấn nằm trong nửa khoảng đó. Tại mỗi nút phủ hoàn toàn, ta chèn hàm vào một cây Li Chao cục bộ được biểu diễn ngay trên nút ấy. Khi truy vấn, ta đi từ gốc tới lá và lấy minimum của các đường lưu trên đường đi.
  • Ý tưởng: Mọi hàm phủ điểm x được chèn vào đúng một nút trên đường gốc-lá của x; hàm không phủ x không xuất hiện trên đường này. Vì vậy minimum thu được chính xác.
  • Ý tưởng: Độ phức tạp: mỗi lần thêm O(log^2 q), mỗi truy vấn O(log q), bộ nhớ O((n+q) log q) trong trường hợp xấu.