Nobita là 1 đứa trẻ vô cùng hậu đậu, vụng về, đôi lúc khá đãng trí nhưng cậu lại có khả năng bắn súng vô cùng thiện xạ. Vào 1 ngày đẹp trời, Doraemon rủ cậu chơi 1 trò chơi đến từ tương lai. Trò chơi đưa Nobita đến 1 thế giới nơi đó cậu ta có thể trở thành 1 siêu anh hùng cứu thế giới khỏi sự xâm lược của người ngoài hành tinh. Trò chơi có 101 màn, nhưng với tài năng xuất chúng của mình nobita đã vuợt 100 màn đầu tiên 1 cách rất dễ dàng. Nhưng đến màn cuối cùng, xung quanh bỗng nhiên xuất hiện rất nhiều UFO của kẻ thù. Bởi vì đây là màn cuối nên rất khó, các UFO có thể phân thân để gây nhiễu loạn cho nobita. Nếu có vô số đạn nobita sẽ dễ dàng vượt qua trò chơi này. Nhưng trò chơi chỉ cho Nobita 1 số lượng đạn nhất định tương ứng với số lượng các UFO cần tiêu diệt (Nếu bắn lung tung thì Nobia có thể mất đạn lãng phí, không tiêu diệt được hết kẻ thù và thua cuộc). Vì vậy Nobita cần phải bắn chính xác ko được trượt phát nào. Ngoài ra, các UFO còn có thể thay đổi độ cao theo thời gian. Trò chơi biết rằng dù Nobita rất giỏi bắn súng nhưng lại chưa dủ trình độ để nhận biết đâu là UFO chính, đâu là bản sao. Nên trò chơi phải cho Nobita một vài gợi ý để cậu ta có khả năng chiến thắng cao hơn. Ban đầu, trò chơi sẽ cung cấp vị trí, độ cao ban đầu của các UFO (cả chính, lẫn bản sao). Một lần, trò chơi sẽ cung cấp cho Nobita 1 thông tin của kẻ thù:
1 u v
: là UFO uu thay đổi độ cao thành vv.2 u v val
: UFO cần tiêu diệt chính sẽ nằm ở vị trí nằm trong khoảng từ uu đến vv, gần bên trái nhất và đang bay ở độ cao thấp hơn hoặc bằng valval.
Tuy đã đưa ra nhưng gợi ý rất chi tiết như vậy nhưng Nobita vẫn chưa thể giải được gợi ý và nhận biết được đâu ra UFO của kẻ thù. Chính vì vậy cậu mới nhờ đến các lập trình viên tương lai. Với tài năng xuất chúng của các lập trình viên trên LQDOJ, các bạn hãy dùng trí thông minh của mình để giúp Nobita nhé. Nobita xin cảm ơn các bạn bằng 1 nghìn lời cảm ơn!!!!!!!!!!!
Input
-
Dòng đầu chứa hai số nguyên \(n,q\) - là số lượng UFO ban đầu, số lượng gợi ý. (\(1 \leq n \leq 10^5, 1 \leq q \leq 10^6\)).
-
Dòng tiếp theo gồm \(a_{1},a_{2},a_{3},...,a_{n}\) là độ cao ban đầu của các UFO. (\(0 \leq a_{i} \leq 10^9\))
-
\(q\) dòng tiếp theo - là nội dung các gợi ý cần giải quyết:
-
1 u v
(\(1 \leq u \leq n,0 \leq v \leq 10^9\)) -
2 u v val
(\(1 \leq u \leq v \leq n,0 \leq val \leq 10^9\))
Output
-
Với mỗi gợi ý 2 cần trả lời vị trí UFO Nobita cần tiêu diệt:
-
Nếu có vị trí tồn tại, in ra vị trí đó.
-
Nếu không, in ra "Skip" để Nobita bỏ qua, ko bắn.
-
Example
Test 1
Input
5 7
5 3 2 5 2
2 2 4 3
1 2 4
2 1 5 2
2 1 2 1
1 3 9
1 5 7
2 1 5 4
Output
2
3
Skip
2
Note
-
Gợi ý thứ 1: UFO của kẻ thù nằm trong khoảng từ 2 đến 4 và có độ cao thấp hơn hoặc bằng 3 nên có vị trí bên trái nhất đó là vị trí 2.
-
Gợi ý thứ 2: UFO vị trí 2 đổi độ cao thành 4.
-
Gợi ý thứ 4: UFO của kẻ thù nằm trong khoảng từ 1 đến 2 và có độ cao thấp hơn hoặc bằng 1 nên ko tồn tại UFO cần tìm.
Bình luận
Để AC bài này các bạn cần biết đi trên cây và đây là link để tìm hiểu giảm đpt mỗi truy vấn từ log^2 n xuống log n nhé :
https://leduythuccs.github.io/2020-07-10-Binary-Search-on-Segment-Tree/
2 bình luận nữa