กำหนดให้ เป็นอาร์เรย์ที่ประกอบไปด้วยความสูงของสันเขา และ แทนความสูงของสันเขาที่
สังเกตว่าในการดึงสันเขา ขนาดของช่วงที่มีความสูงเท่ากัน จะเปลี่ยนแปลงก็ต่อเมื่อ ดังนั้นในการหาคำตอบ เราจึงจำเป็นต้อง พิจารณา ที่แตกต่างกันเพียง ค่าเท่านั้น
เราจะพิจารณา โดยสำหรับแต่ละค่า เราจะหาขนาดของช่วงที่ติดกัน เมื่อช่วงดังกล่าวต้องมีสันเขาที่ ประกอบอยู่ด้วย
สังเกตว่าสันเขาภายในช่วงดังกล่าว ความสูงเดิมจะต้องมีค่าไม่น้อยกว่า และสันเขาที่ถัดจากช่วงนี้ไปทางซ้ายและขวา จะมีความสูงน้อยกว่า มิฉะนั้น จะต้องรวมสันเขานี้เข้าไปในช่วงด้วย ดังนั้น กำหนดให้ช่วง เมื่อ เป็นช่วงของสันเขา เราจะได้ว่า
หากเราไล่ ทีละค่า จะใช้เวลา ต่อการหาขนาดช่วงหนึ่งครั้ง แต่เราสามารถลดเวลาการทำงานลง ด้วยคุณสมบัติที่ว่า หาก ก็จะได้ว่า เมื่อ เช่นกัน และหาก ก็จะได้ว่า เมื่อ เช่นกัน
จากคุณสมบัติดังกล่าว เราจึงสามารถ Binary Search ค่า และ ที่น้อยที่สุดและมากที่สุดตามลำดับ จะทำให้ได้ค่า และ จึงสรุปได้ว่าขนาดช่วงที่ประกอบไปด้วยสันเขา จะมีค่าเป็น นั่นเอง โดยสำหรับการหา และ เราสามารถใช้ Segment Tree ที่รองรับการหาค่าที่น้อยที่สุดในช่วง ทำให้การคิดขนาดช่วงแต่ละสันเขา ใช้เวลาเพียง หรือ ขึ้นกับ Implementation
เมื่อทราบขนาดช่วงของแต่ละสันเขาเป็นที่เรียบร้อยแล้ว สำหรับปัญหาย่อยที่ 1, 2 และ 3 เราจะตอบความสูงของสันเขาที่มากที่สุดที่ขนาดช่วงมีค่าเท่ากับ หรือ หากไม่มีสันเขาดังกล่าว
สำหรับปัญหาย่อยที่ 4 เราจะเก็บคำตอบในอาร์เรย์ เมื่อ เป็นความสูงของสันเขาที่มากที่สุดที่ขนาดช่วงมีค่าเท่ากับ หรือ หากไม่มีสันเขาดังกล่าว ขณะที่คิดขนาดช่วงของสันเขาที่ สมมติให้ขนาดที่ได้เป็น เราก็จะกำหนดให้ นั่นเอง
Time Complexity: หรือ