Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

C++ เพื่อดำเนินการบางอย่างตามลำดับ


สมมติว่าเราได้รับลำดับว่างและ n แบบสอบถามที่เราต้องดำเนินการ แบบสอบถามจะได้รับในการสืบค้นอาร์เรย์และอยู่ในรูปแบบ {query, data} แบบสอบถามสามารถมีสามประเภทดังต่อไปนี้:

  • แบบสอบถาม =1:เพิ่มข้อมูลที่ให้มาที่ส่วนท้ายของลำดับ

  • แบบสอบถาม =2:พิมพ์องค์ประกอบที่จุดเริ่มต้นของลำดับ หลังจากนั้นให้ลบองค์ประกอบ

  • ข้อความค้นหา =3:เรียงลำดับจากน้อยไปมาก

โปรดทราบว่าแบบสอบถามประเภท 2 และ 3 จะมี data =0 เสมอ

ดังนั้น หากอินพุตเป็น n =9 คำสั่ง ={{1, 5}, {1, 4}, {1, 3}, {1, 2}, {1, 1}, {2, 0}, {3, 0}, {2, 0}, {3, 0}} แล้วผลลัพธ์จะเป็น 5 และ 1

ลำดับหลังจากแต่ละแบบสอบถามจะได้รับด้านล่าง -

  • 1:{5}
  • 2:{5, 4}
  • 3:{5, 4, 3}
  • 4:{5, 4, 3, 2}
  • 5:{5, 4, 3, 2, 1}
  • 6:{4, 3, 2, 1} , พิมพ์ 5.
  • 7:{1, 2, 3, 4}
  • 8:{2, 3, 4} พิมพ์ 1
  • 9:{2, 3, 4}

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

priority_queue priqDefine หนึ่งคิว qfor เริ่มต้น i :=0 เมื่อ i  

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include ใช้เนมสเปซ std;void แก้ปัญหา (int n, vector> แบบสอบถาม){ priority_queue priq; คิว q; สำหรับ (int i =0; i > แบบสอบถาม ={{1, 5}, {1, 4}, {1, 3}, {1, 2}, {1, 1}, {2, 0}, {3 , 0}, {2, 0}, {3, 0}}; แก้(n, แบบสอบถาม); คืนค่า 0;}

อินพุต

<ก่อนหน้า>9, {{1, 5}, {1, 4}, {1, 3}, {1, 2}, {1, 1}, {2, 0}, {3, 0}, {2 , 0}, {3}, 0}}

ผลลัพธ์

51