คุณ และนักโบราณคดีหลบระเบิดมาได้อย่างเฉียดฉิว ทำให้เทพเจ้าแห่งตัวเลขตกใจเป็นอย่างมาก อย่างไรก็ดีก่อนที่เทพเจ้าจะยอมรับว่าคุณและนักโบราณคดีไม่ใช่ผู้ตั้งใจลบ หลู่ เป็นเพียงแค่หมู่คนที่จริงๆ แล้วมีสัมมาคารวะ เพียงแต่ยังไม่รู้กาลเทศะดีเท่านั้น เทพเจ้าต้องการทดสอบคุณเป็นขั้นสุดท้าย
เทพเจ้ากำหนดให้มีลำดับจำนวนเต็ม N จำนวน แทนด้วย a
1,a
2,a
3,...,a
N โดยที่ 0 ≤ a
i ≤ 10
9 และกำหนดให้มีปฏิบัติการกับลำดับของตัวเลขนี้ 4 ประเภทดังนี้
- การเวียนวนตัวเลข (a) เมื่อกำหนดค่าจำนวนเต็มบวก x และ y มาให้ หน้าที่ของคุณคือการสลับค่าของ ax และ ay (ค่า x และ y อาจเท่ากันได้)
- การจำแลงตัวเลข (b) เมื่อกำหนดจำนวนเต็มบวก x และ k หน้าที่ของคุณคือแทนค่า ax ใหม่ด้วยค่า k ที่รับเข้ามา
- การปัดเป่าตัวเลข (c) เมื่อกำหนดจำนวนเต็มบวก x หน้าที่ของคุณคือแบ่งตัวเลขออกเป็นส่องกลุ่ม กลุ่มแรกคือตัวเลข x ตัวแรก และกลุ่มที่สองคือตัวเลข N - x ตัวที่เหลือ หลังจากนั้นให้เรียงตัวเลขทั้งสองกลุ่มจากหลังไปหน้าแล้วนำมาต่อกัน กล่าวคือ เปลี่ยนลำดับจาก a1,a2,a3,...,aN ให้เป็น ax,ax-1,ax-2,...,a2,a1,an,an-1,an-2,...,ax+2,ax+1
- การออกดอกของตัวเลข (q) เมื่อกำหนดจำนวนเต็ม x หน้าที่ของคุณบอกเทพเจ้าว่า ax มีค่าเท่าใด
งานของคุณ
จงเขียนโปรแกรมรับลำดับตั้งต้นและรายการปฏิบัติการที่เทพเจ้าสั่งตามลำดับก่อนหลัง แล้วแสดงผลลัพธ์ตัวเลขของปฏิบัติการออกดอกของตัวเลข ออกมาตามลำดับในข้อมูลเข้า
ข้อมูลนำเข้า
บรรทัดแรกมีจำนวนเต็ม N และ M (1 ≤ N, M ≤ 500,000) แสดงความยาวของลำดับตัวเลข และจำนวนปฏิบัติการตามลำดับ
อีก N บรรทัดถัดมา มีข้อมูลของจำนวนเริ่มต้นในลำดับ โดยในบรรทัดที่ i + 1 ของข้อมูลนำเข้าจะมีจำนวนเต็มหนึ่งตัว แทนค่า ai
อีก M บรรทัดถัดมา มีข้อมูลของปฏิบัติการที่เทพเจ้าสั่งให้คุณทำ โดยแต่ละบรรทัดจะมีรูปแบบหนึ่งในสี่แบบดังต่อไปนี้
- “a x y” โดย x, y คือจำนวนเต็มซึ่ง 1 ≤ x, y ≤ N หมายความว่าให้ทำการเวียนวนตัวเลขด้วยค่า x และ y ที่กำหนด
- “b x k” โดย x เป็นจำนวนเต็มซึ่ง 1 ≤ x ≤ N และ k เป็นจำนวนเต็มซึ่ง 0 ≤ k ≤ 109 หมายความว่าให้ทำการจำแลงตัวเลขด้วยค่า และ ที่กำหนด
- “c x” โดย x เป็นจำนวนเต็มซึ่ง 1 ≤ x ≤ N หมายความว่าใหทำการปัดเป่าตัวเลขด้วยค่า ที่กำหนด
- “q x” โดย x เป็นจำนวนเต็มซึ่ง 1 ≤ x ≤ N หมายความว่าให้ทำการออกดอกตัวเลขโดยใช้ค่า ที่กำหนด
ข้อมูลส่งออก
มี D บรรทัดเมื่อ D คือจำนวนการออกดอกตัวเลขในข้อมูลเข้า โดยในบรรทัดที่ i ให้พิมพ์คำตอบของการออกดอกตัวเลขครั้งที่ i ตามลำดับก่อนหลังในข้อมูลเข้า
อธิบายตัวอย่างข้อมูลนำเข้า
ข้อมูลนำเข้า |
ข้อมูลส่งออก |
คำอธิบาย |
5 6 |
|
รับค่า N = 5,M = 6 |
1 |
|
กำหนดค่า a1 = 1 |
3 |
|
กำหนดค่า a2 = 3 |
4 |
|
กำหนดค่า a3 = 4 |
5 |
|
กำหนดค่า a4 = 5 |
2 |
|
กำหนดค่า a5 = 2 |
q 3 |
4 |
แสดงค่า a3 |
b 3 6 |
|
ลำดับของจำนวนใหม่คือ 1 3 6 5 2 |
a 2 4 |
|
ลำดับของจำนวนใหม่คือ 1 5 6 3 2 |
q 2 |
5 |
แสดงค่า a2 |
c 1 |
|
ลำดับของจำนวนใหม่คือ 1 2 3 6 5 |
q 4 |
6 |
แสดงค่า a4 |
การให้คะแนน
50% ของชุดข้อมูลทดสอบ มีค่า N ≤ 5,000 และ M ≤ 5,000 และในทุกชุดข้อมูลทดสอบมีค่า N ≤ 500,000 และ M ≤ 500,000
ที่มา: การแข่งขัน YTOPC Challenge เมษายน 2552
ตัวอย่างข้อมูลนำเข้า | ตัวอย่างข้อมูลส่งออก |
5 6
1
3
4
5
2
q 3
b 3 6
a 2 4
q 2
c 1
q 4 | 4
5
6 |
ความช่วยเหลือ: ไม่มีคำใบ้สำหรับปัญหานี้