Gán đoạn và tìm max

Xem PDF



Tác giả:
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, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1300 Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Cho một mảng \(a\) gồm \(n\) phần tử, các phần tử có giá trị trong khoảng từ \(0\) tới \(10^9\). Bạn được yêu cầu xử lý \(Q\) truy vấn, với các truy vấn như sau:

  1. \(1\ l\ r\ w\): Gán giá trị các phần tử từ vị trí \(l\) tới \(r\) thành \(w\).
  2. \(2\ l\ r\): Tìm phần tử lớn nhất hiện tại trong đoạn từ \(l\) tới \(r\).

Input

  • Dòng thứ nhất gồm hai số nguyên dương \(n\) và \(Q\), lần lượt là kích thước của mảng và số lượng truy vấn.
  • Dòng thứ hai gồm \(n\) số nguyên \(a_1, a_2, ..., a_n\) \((0 \leq a_i \leq 10^9)\).
  • \(Q\) dòng tiếp theo, mỗi dòng là một truy vấn thuộc một trong hai dạng:
  • \(1\ l\ r\ w\) \((1 \leq l \leq r \leq n,\ 0 \leq w \leq 10^9)\): Gán giá trị các phần tử từ vị trí \(l\) tới \(r\) thành \(w\).
  • \(2\ l\ r\) \((1 \leq l \leq r \leq n)\): Tìm phần tử lớn nhất hiện tại trong đoạn từ \(l\) tới \(r\).

Output

  • In ra kết quả cho các truy vấn loại \(2\), mỗi truy vấn in trên một dòng.

Scoring

  • Subtask \(1\) (\(50\%\) số điểm): \(n, Q \leq 10^3\).
  • Subtask \(2\) (\(50\%\) số điểm): \(n, Q \leq 10^5\).

Ví dụ

Test 1

Input
5 8
1 2 3 4 5
2 1 3
2 2 5
1 1 2 2
2 1 3
2 2 5
1 4 5 1
2 1 3
2 2 5
Output
3
5
3
5
3
3

Bình luận

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

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