ในปัญหานี้ เราได้รับอาร์เรย์ res[] ที่มีขนาด N งานของเราคือ ค้นหา Initial Array จากอาร์เรย์ที่กำหนดหลังจากการสืบค้นผลรวมของช่วง
เราจำเป็นต้องค้นหาอาร์เรย์เริ่มต้นซึ่งจะคืนค่าอาร์เรย์ rel[] ในการดำเนินการค้นหา [s, e, val] กับอาร์เรย์นั้น
แต่ละคำถาม [s, e, val] ได้รับการแก้ไขเป็น
s -> ดัชนีเริ่มต้น
e -> ดัชนีสิ้นสุด
val -> ค่าอัปเดตที่จะเพิ่มให้กับแต่ละองค์ประกอบจาก s เป็น e ในอาร์เรย์
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
Input :rel[] ={7, 4, 8}Query[][] ={{1, 2, 1},{0, 1, 3}}Output :{4, 0, 7}ก่อน>คำอธิบาย −
initialArray ={4, 0, 7}; ข้อความค้นหา ={1, 2, 1}; finalArray ={4, 1, 8}initialArray ={4, 1, 8}; ข้อความค้นหา ={0, 1, 3}; finalArray ={7, 4, 8}แนวทางการแก้ปัญหา
วิธีแก้ปัญหาอย่างง่ายคือการสำรวจคำค้นหาทั้งหมด สำหรับคำค้นหาทั้งหมดแก้ไขโดยใช้วิธีที่เราแก้ไข จากนั้นส่งคืนอาร์เรย์ที่พบในตอนท้าย ในการหา initialArray เราต้องดำเนินการตรงกันข้าม กล่าวคือ ลบออกจากอาร์เรย์ที่กำหนด
ตัวอย่าง
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
#includeใช้เนมสเปซ std;void calcInitialArrayQueries(int arr[], int n, int query[][3], int q) { สำหรับ (int i =0; i ผลลัพธ์
อาร์เรย์เริ่มต้น :7 0 7 -1 6