एल्गोरिदम और डेटा संरचनाएँ

Range Maximum Queries (रेंज मैक्सिमम क्वेरीज़)

आपके पास n तत्त्वों का एक ऐरे और q क्वेरीज़ दी गई हैं। इन क्वेरीज़ के दो प्रकार हैं:

  1. किसी दिए गए रेंज में अधिकतम मान प्राप्त करना

  2. ऐरे के किसी निर्दिष्ट स्थान पर नया मान अपडेट करना

आपका काम इन क्वेरीज़ को दक्षता से संसाधित करना है।

इनपुट

इनपुट की पहली पंक्ति में दो पूर्णांक n और q होते हैं (1 ≤ n, q ≤ 100 000), जो ऐरे में मौजूद तत्त्वों की संख्या और क्वेरीज़ की संख्या का प्रतिनिधित्व करते हैं।

दूसरी पंक्ति में n स्पेस से अलग किए गए पूर्णांक ( ) होते हैं, जो ऐरे के प्रारंभिक तत्त्वों को दर्शाते हैं।

अगली q पंक्तियों में प्रत्येक क्वेरी दी गई होती है:

  1. रेंज मैक्सिमम क्वेरी के लिए: पंक्ति की शुरुआत अंक 1 से होती है, इसके बाद दो पूर्णांक और ( ) होते हैं, जो उस रेंज [$$l_i, r_i$$] को दर्शाते हैं, जिसके भीतर अधिकतम मान निकाला जाना है।

  2. ऐरे अपडेट क्वेरी के लिए: पंक्ति की शुरुआत अंक 2 से होती है, इसके बाद दो पूर्णांक और ( ) होते हैं, जो दर्शाते हैं कि ऐरे की स्थिति पर मौजूद तत्त्व को नए मान से अपडेट किया जाना है।

आउटपुट

प्रत्येक रेंज मैक्सिमम क्वेरी के लिए, निर्धारित रेंज में मिलने वाला अधिकतम मान अलग पंक्ति में प्रिंट करें।

उदाहरण

इनपुट

आउटपुट

6 4
1 4 2 7 5 3
1 1 3
2 2 9
1 2 5
1 3 6

4
9
7

Constraints

Time limit: 1.6 seconds

Memory limit: 512 MB

Output limit: 1 MB