คุณกำลังมองไปที่ถนนและมีบางคนทิ้งขยะ! คุณต้องเขียนโปรแกรมเพื่อช่วยแก้ไขปัญหาโดยการทิ้งขยะลงในถังขยะ
งาน
avenue ประกอบด้วยสตริงของอักขระ ASCII ที่พิมพ์ได้เช่น:
[[](dust)[]] car ((paper)vomit) (broken(glass)) [[] (rotten) fence (dirty)
วงเล็บบางตัวที่นี่ไม่มีที่เปรียบ นั่นเป็นเพียงล่อ สิ่งที่เราใส่ใจคือชุดของวงเล็บที่ตรงกัน
ถังขยะเป็นสตริงที่เริ่มต้นด้วย[
และลงท้ายด้วย]
และมีวงเล็บจับคู่ภายในและวงเล็บ ตัวอย่างเช่น[]
และ[[](dust)[]]
เป็นถังขยะในสตริงด้านบน
ถุงขยะเป็นสตริงที่เริ่มต้นด้วย(
และลงท้ายด้วย)
และมีวงเล็บจับคู่ภายในและวงเล็บ ตัวอย่างเช่น(dust)
เป็นถุงขยะในสตริงด้านบน
เป็นไปได้ว่าถุงขยะบางส่วนอยู่ในถังขยะแล้ว อย่างไรก็ตามจะมีอย่างน้อยหนึ่งรายการที่ถูกทิ้งไว้และเราจำเป็นต้องย้ายถุงขยะเพื่อให้พวกเขาทั้งหมดอยู่ในถังขยะ โดยเฉพาะสำหรับถุงขยะแต่ละถุงที่ไม่ได้อยู่ในถังขยะในปัจจุบัน (เช่นซับสตริงของถังขยะนั้น) เราต้องลบมันออกจากตำแหน่งปัจจุบันในสตริงและแทรกลงในสถานที่ที่อยู่ในถังขยะแทน .
มีกฎเพิ่มเติมที่นี่ เนื่องจากเราไม่ต้องการใช้เงินมากเกินไปกับนักสะสมขยะและเส้นทางของพวกเขาพาพวกเขาไปตามถนนจากทางซ้ายไปขวาเราต้องการย้ายถุงขยะแต่ละใบไปทางซ้าย (เกณฑ์ที่สำคัญที่สุดสมมติว่าเราต้องย้ายที่ ทั้งหมด) และระยะทางที่สั้นที่สุดเท่าที่จะทำได้ (ตราบเท่าที่มันถูกย้ายไปทางซ้าย) ตัวอย่างเช่นเอาต์พุตที่ถูกต้องเท่านั้นสำหรับ
[can1](bag)[can2]
คือ
[can1(bag)][can2]
(เลื่อนถุงไปทางซ้ายหนึ่งตัวอักษร) นอกจากนี้ถุงต้องอยู่ในลำดับที่สัมพันธ์กัน:
[can](bag1)(bag2)
ต้องเป็น
[can(bag1)(bag2)]
(เช่นคุณไม่สามารถวาง(bag2)
ที่ด้านซ้ายของ(bag1)
)
ชี้แจง
- จะไม่มีถุงขยะอยู่ทางซ้ายของถังขยะซ้ายสุด มันจะเป็นไปได้ที่จะสามารถทิ้งขยะทั้งหมดด้วยการย้ายไปทางซ้าย
- จะต้องมีอย่างน้อยหนึ่งถุงที่จะย้าย อาจมีมากกว่าหนึ่ง
- จะไม่มีถังขยะอยู่ในถุงขยะ (กระป๋องมีค่าเกินกว่าที่จะทิ้งไป)
- หากกระเป๋าอยู่ในกระป๋องแล้วให้ทิ้งไว้คนเดียว
- ไม่เป็นไรสำหรับอินพุตและเอาต์พุตจะแตกต่างกันตามช่องว่างต่อท้าย
ตัวอย่าง:
การป้อนข้อมูล:
[[](dust)[]] car ((paper)vomit) (broken(glass)) [[] (rotten) fence (dirty)
เอาท์พุท:
[[](dust)[]((paper)vomit)(broken(glass))] car [[(rotten)(dirty)] fence
การป้อนข้อมูล:
[]] (unusable) door (filthy) car
ผลผลิต:
[(unusable)(filthy)]] door car