A2.pdf

‫ﺑﺎﺳﻤﻪ ﺗﻌﺎﻟ‬
‫دادهﺳﺎﺧﺘﺎرﻫﺎ و ﻣﺒﺎﻧ اﻟ ﻮرﯾﺘﻢﻫﺎ )‪(۴٠-٢۵۴‬‬
‫‪Data Structures and Fundamentals of Algorithms‬‬
‫داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ‬
‫ﻣﺪرس‪ :‬ﻣﺤﻤﺪ ﻗﺪﺳ‬
‫ﺗﻤﺮﯾﻦ ﺷﻤﺎرهی ‪١‬‬
‫‪.١‬‬
‫ﻣﻮﻋﺪ ارﺳﺎل‪ ۴ :‬آﺑﺎن ‪١٣٩٣‬‬
‫• ﺗﻤﺮﯾﻦ ‪ ٢.٧-٣‬از ﮐﺘﺎب‪.‬‬
‫• ﺗﻤﺮﯾﻦ ‪ ۴.٧-٣‬از ﮐﺘﺎب‪.‬‬
‫• ﺗﻤﺮﯾﻦ ‪ ٧.٣-۴‬از ﮐﺘﺎب‪.‬‬
‫‪ .٢‬ﻟﯿﺴﺖ ﭘﯿﻮﻧﺪیای دارﯾﻢ ﮐﻪ در آن ﻫﺮ ﻋﻀﻮ ﺗﻨﻬﺎ اﺷﺎرهﮔﺮ ﺑﻪ ﻋﻀﻮ ﺑﻌﺪی دارد‪ .‬روﺷ ﺧﻄ اراﺋﻪ دﻫﯿﺪ ﮐﻪ ﺑﺪون ﺗﻐﯿﯿﺮ در‬
‫ﺳﺎﺧﺘﺎر ﻟﯿﺴﺖ و ﺗﻨﻬﺎ ﺑﺎ اﺳﺘﻔﺎده از )‪ O(١‬ﺣﺎﻓﻈﻪ اﺿﺎﻓﻪ‪ ،‬ﻣﺸﺨﺺ ﮐﻨﺪ آﯾﺎ در اﯾﻦ ﻟﯿﺴﺖ دور وﺟﻮد دارد ﯾﺎ ﺧﯿﺮ‪) .‬ﻻزم‬
‫اﺳﺖ ﺳﺎﺧﺘﺎر ﻟﯿﺴﺖ در ﻃﻮل اﺟﺮای اﻟ ﻮرﯾﺘﻢ ﺛﺎﺑﺖ ﺑﻤﺎﻧﺪ و ﺛﺎﺑﺖ ﻣﺎﻧﺪن آن در اﺑﺘﺪا و اﻧﺘﻬﺎی اﻟ ﻮرﯾﺘﻢ ﮐﺎﻓ ﻧﯿﺴﺖ(‪.‬‬
‫‪ .٣‬در اﯾﺴﺘ ﺎه ﻫﺎی ﻗﻄﺎر ﺑﺮای ﺟﺎﺑﻪ ﺟﺎ ﮐﺮدن ﻗﻄﺎرﻫﺎ از ﯾ‬
‫رﯾﻞ اﺿﺎﻓ ﻣﺎﻧﻨﺪ ﺷ ﻞ ‪ ٢‬اﺳﺘﻔﺎده ﻣﯿﺸﻮد ‪.‬اﯾﻦ رﯾﻞ اﺿﺎﻓ‬
‫ﻣﺎﻧﻨﺪ ﭘﺸﺘﻪ ﻋﻤﻞ ﻣﯿ ﻨﺪ ‪ ،‬ﯾﻌﻨ اوﻟﯿﻦ ﻗﻄﺎری ﮐﻪ وارد اﯾﻦ رﯾﻞ ﻣﯿﺸﻮد ‪ ،‬آﺧﺮﯾﻦ ﻗﻄﺎری اﺳﺖ ﮐﻪ از اﯾﻦ رﯾﻞ اﺿﺎﻓ ﺧﺎرج‬
‫ﻣﯿﺸﻮد ‪ .‬ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﺑﺎﻻﺗﺮﯾﻦ ﻗﻄﺎر در رﯾﻞ اﺿﺎﻓ ﻓﻘﻂ ﻣﯿﺘﻮاﻧﺪ ﭘﺲ از ﺣﺬف از اﯾﻦ رﯾﻞ ‪ ،‬در رﯾﻞ ﺳﻤﺖ راﺳﺖ ﻗﺮار‬
‫ﺑ ﯿﺮد و اﻣ ﺎن ﺑﺎزﮔﺸﺖ ﻣﺠﺪد آن ﺑﻪ رﯾﻞ ورودی ﻧﯿﺴﺖ ‪ .‬ﺣﺎل ﻓﺮض ﮐﻨﯿﺪ ‪ n‬ﻗﻄﺎر در رﯾﻞ ورودی ﺑﺎ ﺷﻤﺎره ﻫﺎی ‪ ١‬ﺗﺎ‬
‫‪ n‬اﯾﺴﺘﺎده اﻧﺪ ‪ .‬ﺑﺎ ﺗﺮﮐﯿﺐ ﻣﻨﺎﺳﺒ از ‪ n‬ﺑﺎر درج و ‪ n‬ﺑﺎر ﺣﺬف ‪ ،‬ﺟﺎﯾ ﺸﺘ از ﺷﻤﺎره ﻗﻄﺎرﻫﺎ در رﯾﻞ ﺧﺮوﺟ ﺑﺪﺳﺖ ﻣ‬
‫آﯾﺪ ‪ .‬ﺑﺎ اﯾﻦ روال ﻫﺮ دﻧﺒﺎﻟﻪ ای ﻗﺎﺑﻞ ﺗﻮﻟﯿﺪ ﻧﯿﺴﺖ ‪ .‬ﺑﺮای ﻣﺜﺎل در ﺷ ﻞ زﯾﺮ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ دﻧﺒﺎﻟﻪ ورودی داده ﺷﺪه ‪ ،‬دﻧﺒﺎﻟﻪ‬
‫)‪ (١،۵،٢،۶،٨،٧،٣،۴‬ﮐﻪ در آن ‪ ۴‬ﺷﻤﺎره اوﻟﯿﻦ ﻗﻄﺎر در رﯾﻞ ﺧﺮوﺟ اﺳﺖ ﻗﺎﺑﻞ ﺗﻮﻟﯿﺪ ﻧﯿﺴﺖ ‪.‬‬
‫ﺷ ﻞ ‪ :١‬ﯾ‬
‫ﺧﺮوﺟ ﻣﻌﺘﺒﺮ ﺗﻮﻟﯿﺪ ﺷﺪه‬
‫اﻟﻒ( ﺗﻌﺪاد اﯾﻦ ﺟﺎﯾ ﺸﺖ ﻫﺎ ﭼﻨﺪ ﺗﺎﺳﺖ ؟ راﺑﻄﻪ ای ﺑﺎزﮔﺸﺘ ﺑﺮای ﺑﺪﺳﺖ آوردن اﯾﻦ ﺗﻌﺪاد ﺑﻨﻮﯾﺴﯿﺪ و ﺑﺎ ﺣﻞ آن ﻣﺮﺗﺒﻪ‬
‫ﺗﻌﺪاد ﺟﺎﯾ ﺸﺖ ﻫﺎ را ﺑﺮ ﺣﺴﺐ ﺗﻌﺪاد ﻗﻄﺎر وارد ﺷﺪه در رﯾﻞ ﭼﭗ )‪ (n‬و ﺑﺎ اﺳﺘﻔﺎده از ﻧﻤﺎدﻫﺎی ﻣﺠﺎﻧﺒ ﺑﻨﻮﯾﺴﯿﺪ‪.‬‬
‫ب( ﺷﺮط ﻻزم و ﮐﺎﻓ ﺑﺮای اﯾﻨ ﻪ ﯾ‬
‫دﻧﺒﺎﻟﻪ ﻗﺎﺑﻞ ﺗﻮﻟﯿﺪ ﺑﺎﺷﺪ ﭼﯿﺴﺖ؟‬
‫ج( اﻟ ﻮرﯾﺘﻤ از )‪ O(n‬اراﺋﻪ دﻫﯿﺪ ﺗﺎ ﻗﺎﺑﻞ ﺗﻮﻟﯿﺪ ﺑﻮدن ﯾ‬
‫د( اﮔﺮ ﯾ‬
‫دﻧﺒﺎﻟﻪ را ﺑﺮرﺳ ﮐﻨﺪ‪.‬‬
‫رﯾﻞ ﻣﺴﺘﻘﯿﻢ ﻫﻢ ﺑﯿﻦ ﻗﻄﺎرﻫﺎی ورودی و ﺧﺮوﺟ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ ‪ ،‬ﯾﻌﻨ ﻗﻄﺎر ورودی ﺑﺘﻮاﻧﺪ ﻣﺴﺘﻘﯿﻤﺎ‬
‫ﺑﻪ رﯾﻞ ﺧﺮوﺟ ﻣﻨﺘﻘﻞ ﺷﻮد آﯾﺎ ﺗﻌﺪاد ﺟﺎﯾ ﺸﺖ ﻫﺎی ﻗﺎﺑﻞ ﺗﻮﻟﯿﺪ ﺑﯿﺸﺘﺮ ﻣﯿﺸﻮد؟‬
‫‪ .۴‬اﻟ ﻮرﯾﺘﻤ ﺑﺎ زﻣﺎن اﺟﺮای )‪ O(n‬ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﺑﺎ درﯾﺎﻓﺖ آراﯾﻪای از ‪ n‬ﻋﺪد ﺣﻘﯿﻘ و ﻋﺪد ﻃﺒﯿﻌ ‪ k‬ﻣﺸﺨﺺ ﮐﻨﺪ ﮐﻪ آﯾﺎ‬
‫‪ k‬ﻋﺪد ﻣﺘﻮاﻟ درون آراﯾﻪ وﺟﻮد دارﻧﺪ ﮐﻪ ﻓﺎﺻﻠﻪی دو ﻋﺪد ﺑﯿﻦ آنﻫﺎ از ‪ ١‬ﺑﯿﺸﺘﺮ ﺑﺎﺷﺪ ﯾﺎ ﺧﯿﺮ‪.‬‬
‫‪١‬‬
‫‪ .۵‬ﯾ‬
‫ﯾ‬
‫‪ Quack‬دادهﺳﺎﺧﺘﺎرﯾﺴﺖ ﮐﻪ ﻗﺎﺑﻠﯿﺖ ﺻﻒ و ﭘﺸﺘﻪ را ﺑﻪ ﺻﻮرت ﻫﻤﺰﻣﺎن دارد‪ .‬در واﻗﻌﺎ آن را ﻣ ﺗﻮان ﺑﻪ ﺻﻮرت‬
‫ﻟﯿﺴﺖ از اﻋﻀﺎ ﮐﻪ از ﭼﭗ ﺑﻪ راﺳﺖ ﻧﻮﺷﺘﻪ ﺷﺪهاﻧﺪ ﻣﺸﺎﻫﺪه ﮐﺮد ﮐﻪ ﺳﻪ ﻋﻤﻞ زﯾﺮ را ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﮐﻨﺪ‪:‬‬
‫• ‪ :Push‬ﯾ‬
‫ﻋﻀﻮ ﺟﺪﯾﺪ ﺑﻪ اﻧﺘﻬﺎی ﺳﻤﺖ ﭼﭗ ﻟﯿﺴﺖ اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ‪.‬‬
‫• ‪ :Pop‬ﺳﻤﺖ ﭼﭗﺗﺮﯾﻦ ﻋﻀﻮ ﻟﯿﺴﺖ را ﺣﺬف ﻣ ﮐﻨﺪ‪.‬‬
‫• ‪ :Pull‬ﺳﻤﺖ راﺳﺖﺗﺮﯾﻦ ﻋﻀﻮ ﻟﯿﺴﺖ را ﺣﺬف ﻣ ﮐﻨﺪ‪.‬‬
‫ﺑﺎ اﺳﺘﻔﺎده از ‪ ٣‬ﭘﺸﺘﻪ و )‪ O(١‬ﺣﺎﻓﻈﻪی اﺿﺎﻓ اﯾﻦ داده ﺳﺎﺧﺘﺎر را ﺑﻪ ﮔﻮﻧﻪای ﻃﺮاﺣ ﮐﻨﯿﺪ ﮐﻪ ﻫﺮ ﯾ‬
‫از اﻋﻤﺎل ذﮐﺮ‬
‫ﺷﺪه در زﻣﺎن ﺳﺮﺷ ﻦ )‪ O(١‬ﻗﺎﺑﻞ اﻧﺠﺎم ﺑﺎﺷﻨﺪ‪ .‬ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﺑﻪ ﭘﺸﺘﻪﻫﺎ ﺻﺮﻓﺎً ﺗﻮﺳﻂ ﺗﻮاﺑ اﺳﺘﺎﻧﺪارد ‪ Push‬و ‪Pop‬‬
‫دﺳﺘﺮﺳ دارﯾﺪ‪.‬‬
‫‪ Deque .۶‬داده ﺳﺎﺧﺘﺎرﯾﺴﺖ ﮐﻪ ﻋﻤﻞ ‪ Push‬و ‪ Pop‬در ﻫﺮ دو ﻃﺮف آن در زﻣﺎن )‪ O(١‬اﻧﺠﺎم ﻣ ﺷﻮد‪.‬داده ﺳﺎﺧﺘﺎر‬
‫‪ Deque‬را ﻃﺮاﺣ ﮐﻨﯿﺪ‪.‬‬
‫‪ .٧‬ﺷﻨ ﻮل ﮐﻪ ﻧﻤﺮهی درس ﮐﺎﻣﭙﺎﯾﻠﺮش‪ ،‬ﺑﺴﯿﺎر ﮐﻤﺘﺮ از ﻣﻨ ﻮل ﺷﺪه ادﻋﺎ ﻣ ﮐﻨﺪ ﮐﻪ اﯾﻦ درس را ﺑﯿﺸﺘﺮ از او ﺑﻠﺪ اﺳﺖ و ﺗﻨﻬﺎ‬
‫دﻟﯿﻠ ﮐﻪ ﺑﺎﻋﺚ ﺷﺪه ﻧﻤﺮهی ﺑﺪی ﺑ ﯿﺮد‪ ،‬ﻣﺘﻔﺎوت ﺑﻮدن اﺳﺘﺎدﺷﺎن اﺳﺖ‪ .‬ﻣﻨ ﻮل اﯾﻦ ادﻋﺎی او را رد ﻣ ﮐﻨﺪ و ﻣ ﺧﻮاﻫﺪ‬
‫ﺑﺎ ﻃﺮح ﯾ‬
‫ﻣﺴﺌﻠﻪ ﺑﻪ او ﺛﺎﺑﺖ ﮐﻨﺪ ﮐﻪ اﯾﻨ ﻮﻧﻪ ﻧﯿﺴﺖ‪ .‬ﻣﻨ ﻮل ﺑﻪ ﺷﻨ ﻮل ﯾ‬
‫ﻋﺒﺎرت رﯾﺎﺿ ‪ infix‬ﻣ دﻫﺪ و از او‬
‫ﻣ ﺧﻮاﻫﺪ ﮐﻪ ﻣﻌﺎدل ‪ postfix‬آن را ﺑﻪ او ﺑﺪﻫﺪ‪ .‬ﺷﻨ ﻮل ﺑﺮای اﯾﻦﮐﻪ ﺧﻮدی ﻧﺸﺎن ﺑﺪﻫﺪ ﺗﺼﻤﯿﻢ ﻣ ﮔﯿﺮد ﺑﺮﻧﺎﻣﻪای ﺑﻨﻮﯾﺴﺪ‬
‫ﮐﻪ اﯾﻦ ﮐﺎر را ﺑﺮای او اﻧﺠﺎم دﻫﺪ‪ .‬ﺷﻤﺎ ﺑﺎﯾﺪ در اﯾﻦ ﮐﺎر ﺑﻪ ﺷﻨ ﻮل ﮐﻤ‬
‫ﮐﻨﯿﺪ‪.‬‬
‫در ﻣﺪل ‪ infix‬ﻋﻤﻠﻮﻧﺪ ﺑﯿﻦ ﻋﻤﻞﮔﺮ ﻫﺎ ﻇﺎﻫﺮ ﻣ ﺷﻮد‪ .‬ﻣﺜﻞ ﻋﺒﺎرت ») ‪ .«S ∗ O + (B − E/N‬اﻣﺎ در ﻣﺪل ‪postfix‬‬
‫ﻋﻤﻠﻮﻧﺪ ﺑﻌﺪ از ﻋﻤﻠ ﺮﻫﺎ ﻇﺎﻫﺮ ﻣ ﺷﻮد‪ .‬ﻣﺜﻼ ﻫﻤﺎن ﻋﺒﺎرت ﻗﺒﻞ اﮔﺮ ﺑﻪ ﺻﻮرت ‪ postfix‬ﻧﻮﺷﺘﻪ ﺷﻮد‪ ،‬ﺑﻪ ﺻﻮرت‬
‫»‪ «SO ∗ BEN/ − +‬ﻧﻤﺎﯾﺶ داده ﻣ ﺷﻮد‪ .‬ﻗﺎﺑﻞ ذﮐﺮ اﺳﺖ‪ ،‬در ﻣﺪل ‪ postfix‬اﺑﻬﺎﻣ وﺟﻮد ﻧﺪارد و ﻧﯿﺎزی ﺑﻪ‬
‫ﭘﺮاﻧﺘﺰﮔﺬاری ﻧﯿﺴﺖ‪ .‬ﺑﺮﻧﺎﻣﻪای ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﯾ‬
‫ﻋﺒﺎرت رﯾﺎﺿ ‪ ،‬ﺣﺎوی ﭼﻬﺎر ﻋﻤﻞ اﺻﻠ ﺑ ﯿﺮد و ﻣﻌﺎدل ‪ postfix‬آن را‬
‫ﻧﻤﺎﯾﺶ دﻫﺪ‪.‬‬
‫ورودی‬
‫ﯾ‬
‫رﺷﺘﻪ ﺷﺎﻣﻞ ﺣﺮوف ﺑﺰرگ اﻧ ﻠﯿﺴ ‪ ،‬ﭘﺮاﻧﺘﺰ و ﭼﻬﺎر ﻋﻤﻞ اﺻﻠ ﻣ ﺑﺎﺷﺪ ﮐﻪ ﯾ‬
‫ﻋﺒﺎرت درﺳﺖ ‪ infix‬را ﻣﺸﺨﺺ‬
‫ﻣ ﮐﻨﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ ﻃﻮل ورودی از ‪ ۵ ∗ ١٠٣‬ﺑﯿﺸﺘﺮ ﻧﯿﺴﺖ‪.‬‬
‫ﺧﺮوﺟ‬
‫ﻋﺒﺎرت ﻣﻌﺎدل ﻣﻌﻨﺎﯾ ‪ postfix‬ورودی‪.‬‬
‫ورودی وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﺟﻮاﺑ را ﺑﺮﮔﺮداﻧﯿﺪ ﮐﻪ ﺑﺎ ﺣﺬف‬
‫ﺗﻮﺟﻪ ﮐﻨﯿﺪ‪ ،‬ﻣﻤ ﻦ اﺳﺖ ﭼﻨﺪ ﺟﻮاب ﻣﺘﻔﺎوت ﺑﺮای ﯾ‬
‫ﻫﻤﻪی ﻋﻤﻠﻮﻧﺪﻫﺎ و ﭘﺮاﻧﺘﺰﻫﺎ از ورودی و ﺧﺮوﺟ ﺑﻪ دو رﺷﺘﻪی ﯾ ﺴﺎن ﺑﺮﺳﯿﻢ‪.‬‬
‫ورودی و ﺧﺮوﺟ ﻧﻤﻮﻧﻪ‪:‬‬
‫‪stdout‬‬
‫‪stdin‬‬
‫)‪S*O+(B-E/N‬‬
‫‪٢‬‬
‫‪SO*BEN/-+‬‬
‫‪ .٨‬ﺑﻌﺪ از آنﮐﻪ ﺷﻨ ﻮل‪ ،‬ﺑﺮﻧﺎﻣﻪی ﺧﻮد را ﺑﻪ ﻣﻨ ﻮل ﻧﺸﺎن داد‪ .‬از او ﺧﻮاﺳﺖ ﮐﻪ ﺣﺎﻻ او ﺑﺮﻧﺎﻣﻪای ﺑﻨﻮﯾﺴﺪ ﮐﻪ ﯾ‬
‫ﻋﺒﺎرت‬
‫‪ postfix‬ﺑﻪ ﻫﻤﺮاه ﻣﻘﺪار ﻣﺘﻐﯿﺮﻫﺎ ﺑ ﯿﺮد و ﺟﻮاب ﻧﻬﺎﯾ را ﭼﺎپ ﮐﻨﺪ‪ .‬ﻣﻨ ﻮل ﮐﻪ ﺑﺎ وﺟﻮد ﻧﻤﺮهی ﺑﺴﯿﺎر ﺑﺎﻻﺗﺮ از ﺷﻨ ﻮل‪،‬‬
‫ﻧﻤ ﺗﻮاﻧﺪ ﭼﻨﯿﻦ ﺑﺮﻧﺎﻣﻪی ﺳﺎدهای را ﺑﻨﻮﯾﺴﺪ‪ ،‬ﺑﻨﺎﺑﺮاﯾﻦ از ﺷﻤﺎ در ﺧﻮاﺳﺖ ﮐﻤ‬
‫ﮐﺮده اﺳﺖ‪.‬‬
‫ورودی‬
‫در ﺧﻂ اول ورودی‪ ،‬ﯾ‬
‫ﯾ‬
‫ﻋﺒﺎرت ‪ postfix‬ﺷﺎﻣﻞ ﯾ‬
‫ﺳﺮی ﻣﺘﻐﯿﺮ )ﮐﻪ ﻫﺮ ﮐﺪام ﯾ‬
‫ﺣﺮف ﺑﺰرگ ﺷﺮوع ﻣ ﺷﻮد و ﺑﻘﯿﻪی ﺣﺮفﻫﺎﯾﺶ ﮐﻮﭼ‬
‫رﺷﺘﻪ از ﺣﺮوف ﻻﺗﯿﻦ اﺳﺖ ﮐﻪ ﺑﺎ‬
‫اﺳﺖ( و اﻋﻤﺎل »ﺿﺮب‪ ،‬ﺟﻤ و ﺗﻔﺮﯾﻖ« ﺑﺎ ﺣﺪاﮐﺜﺮ ﻃﻮل‬
‫‪ ١٠۶‬ﻗﺮار دارد‪ .‬در ﺧﻂ ﺑﻌﺪ ﻋﺪد ‪ N‬ﮐﻪ ﺗﻌﺪاد ﻣﺘﻐﯿﺮﻫﺎی ﻋﺒﺎرت داده ﺷﺪه را ﻧﺸﺎن ﻣ دﻫﺪ وارد ﻣ ﺷﻮد‪ .‬در ‪ N‬ﺧﻂ‬
‫ﺑﻌﺪ در ﻫﺮ ﺧﻂ ﻣﻘﺪار ﯾ‬
‫ﻣﻘﺪار آن )ﯾ‬
‫ﻣﺘﻐﯿﺮ وارد ﻣ ﺷﻮد‪ .‬ﺑﻪ اﯾﻦ ﺻﻮرت ﮐﻪ اﺑﺘﺪا ﻧﺎم ﻣﺘﻐﯿﺮ ﺳﭙﺲ ﯾ‬
‫ﻋﻼﻣﺖ ﺗﺴﺎوی و ﺳﭙﺲ‬
‫ﻋﺪد ﺻﺤﯿ ﺑﯿﻦ ‪ ٠‬ﺗﺎ ‪(١٠٩‬ﻗﺮار ﻣ ﮔﯿﺮد‪.‬‬
‫ﺧﺮوﺟ‬
‫ﺷﻤﺎ ﺑﺎﯾﺪ ﺣﺎﺻﻞ ﻋﺒﺎرت داده ﺷﺪه را ﭼﺎپ ﮐﻨﯿﺪ‪.‬‬
‫ورودی و ﺧﺮوﺟ ﻧﻤﻮﻧﻪ‬
‫‪stdout‬‬
‫‪stdin‬‬
‫‪246‬‬
‫‪SO*BEN*-+‬‬
‫‪5‬‬
‫‪S=10‬‬
‫‪O=20‬‬
‫‪B=50‬‬
‫‪E=1‬‬
‫‪N=4‬‬
‫‪stdout‬‬
‫‪stdin‬‬
‫***‪DontForgetLongNumbers‬‬
‫‪4‬‬
‫‪Dont=100000000‬‬
‫‪Forget=100000000‬‬
‫‪Long=100000000‬‬
‫‪Numbers=100000000‬‬
‫‪٣‬‬
‫‪100000000000000000000000000000000‬‬
‫ردﯾﻒ ﭼﯿﺪه اﺳﺖ‪ .‬ﮔﺰل ﮐﻪ از دﯾﺪن اﯾﻦ ﺗﻌﺪاد ﻧﻮار ﮐﺎﺳﺖﻫﺎ‬
‫‪ .٩‬ﮔﺎز ﺗﻌﺪاد زﯾﺎدی ﻧﻮار ﮐﺎﺳﺖ ﻗﺪﯾﻤ دارد ﮐﻪ در ﯾ‬
‫ﺣﯿﺮتزده ﺷﺪه از ﮔﺎز ﻣ ﺧﻮاﻫﺪ ﮐﻪ اﺟﺎزه دﻫﺪ ﺑﺎ ﻧﻮارﻫﺎ ﺑﺎزی ﮐﻨﻨﺪ‪ .‬ﮔﺎز ﻗﺒﻮل ﻣ ﮐﻨﺪ و اﺟﺎزه ﻣ دﻫﺪ ﮔﺰل در اﺑﺘﺪا‬
‫ﺗﺮﺗﯿﺐ اﺳﺎﻣ ﻫﻤﻪی ﮐﺎﺳﺖﻫﺎ را ﺑﺒﯿﻨﺪ‪ .‬ﺳﭙﺲ ﻫﻤﻪی آنﻫﺎ را ﺑﺮﻋ ﺲ ﻣ ﮐﻨﺪ ﺟﻮری ﮐﻪ ﮔﺰل اﺳﻢ آنﻫﺎ را ﻧﺒﯿﻨﺪ و ﺑﻪ او‬
‫ﻣ ﮔﻮﯾﺪ در ﻫﺮ ﻣﺮﺣﻠﻪ ﻣﻦ ﯾ‬
‫از دو ﮐﺎر زﯾﺮ را از ﺗﻮ ﻣ ﺧﻮاﻫﻢ‪:‬‬
‫• ﺗﺮﺗﯿﺐ ﻗﺮار ﮔﺮﻓﺘﻦ ﻧﻮارﻫﺎی ‪i‬ام ﺗﺎ ‪j‬ام را ﺑﺮﻋ ﺲ ﮐﻨ ‪.‬‬
‫• ﻧﺎم ﻧﻮار ‪k‬ام )ﻋﺪدی ﺑﯿﻦ ‪ i‬و‪ (j‬را ﺑﻪ ﻣﻦ ﺑ ﻮﯾ ‪.‬‬
‫ﺷﻤﺎ ﺑﺎﯾﺪ ﺑﺮﻧﺎﻣﻪای ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﺑﺎ درﯾﺎﻓﺖ ﻟﯿﺴﺖ اﺳﺎﻣ ﮐﺎﺳﺖﻫﺎ ﺑﻪ ﮔﺰل ﮐﻤ‬
‫ﮐﻨﺪ ﮐﻪ ﻋﻤﻞ ﺧﻮاﺳﺘﻪ ﺷﺪه را اﻧﺠﺎم دﻫﺪ‬
‫و ﺑﻪ ﭘﺮﺳﺶ ﮔﺎز ﺑﻪ درﺳﺘ ﭘﺎﺳ دﻫﺪ‪.‬‬
‫ورودی‬
‫در ﺧﻂ اول ورودی ﻋﺪد ‪ n ≤ ١٠۶‬ﺗﻌﺪاد ﻧﻮارﻫﺎی ﮐﺎﺳﺖ وارد ﻣ ﺷﻮد‪ .‬در ‪ n‬ﺧﻂ‪ ،‬ﻧﺎم ﻧﻮارﻫﺎی ﮐﺎﺳﺖ ﺑﻪ ﺗﺮﺗﯿﺐ وارد‬
‫ﻣ ﺷﻮد‪ .‬ﺳﭙﺲ ﻋﺪد ‪ m ≤ ١٠۴‬ﮐﻪ ﺗﻌﺪاد ﻣﺮﺣﻠﻪﻫﺎی ﺑﺎزﯾﺴﺖ وارد ﻣ ﺷﻮد و ﺳﭙﺲ در ‪ m‬ﺧﻂ ﺑﻌﺪ در ﻫﺮ ﺧﻂ ﯾ‬
‫از‬
‫دو ورودی ‪ REV i j‬ﮐﻪ ﻧﺸﺎن دﻫﻨﺪهی ﺧﻮاﺳﺘﻪی اول اﺳﺖ و ﻣﻌﻨ آن اﯾﻦ اﺳﺖ ﮐﻪ ﮐﺎﺳﺖﻫﺎی ‪i‬ام ﺗﺎ ‪j‬ام را ‪reverse‬‬
‫ﮐﻨﺪ‪ .‬و ﯾﺎ ‪ NAME k‬ﮐﻪ ﻧﺸﺎندﻫﻨﺪهی ﺧﻮاﺳﺘﻪی دوم اﺳﺖ و ﻧﺎم ﮐﺎﺳﺖ ‪k‬ام را ﻣ ﭘﺮﺳﺪ‪ ،‬آورده ﻣﯿﺸﻮد‪.‬‬
‫ﺧﺮوﺟ‬
‫ﺑﻪ ازای ﻫﺮ ﭘﺮﺳﺶ ‪ NAME k‬ﻧﺎم ﮐﺎﺳﺖ را ﭼﺎپ ﮐﻨﯿﺪ‪.‬‬
‫ورودی و ﺧﺮوﺟ ﻧﻤﻮﻧﻪ‬
‫‪stdout‬‬
‫‪stdin‬‬
‫‪10‬‬
‫‪Wish You Were Here‬‬
‫‪Wish You Were Here‬‬
‫‪Atom Heart Mother‬‬
‫‪The Dark Side Of The Moon‬‬
‫‪The Piper At The Gates Of Dawn‬‬
‫‪The Wall‬‬
‫‪The Division Bell‬‬
‫‪Animals‬‬
‫‪Meddle‬‬
‫‪The Piper At The Gates Of Dawn‬‬
‫‪A Momentary Lapse Of Reason‬‬
‫‪Atom Heart Mother‬‬
‫‪Pulse‬‬
‫‪5‬‬
‫‪1 NAME‬‬
‫‪10 1 REV‬‬
‫‪2 NAME‬‬
‫‪7 3 REV‬‬
‫‪6 NAME‬‬
‫‪۴‬‬