ﺑﺎﺳﻤﻪ ﺗﻌﺎﻟ دادهﺳﺎﺧﺘﺎرﻫﺎ و ﻣﺒﺎﻧ اﻟ ﻮرﯾﺘﻢﻫﺎ )(۴٠-٢۴۵ Data Structures and Fundamentals of Algorithms داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ ﻣﺪرس :ﻣﺤﻤﺪ ﻗﺪﺳ ﻣﻬﻠﺖ ارﺳﺎل١٣٩١/٧/٢٨ : ﺗﻤﺮﯾﻦ ﻋﻤﻠ -ﺷﻤﺎرهی ١ • ﺟﻮاب ﺗﻤﺮﯾﻦﻫﺎ را ﻣ ﺑﺎﯾﺴﺖ از ﻃﺮﯾﻖ ﺳﺎﻣﺎﻧﻪی ﺑﺮﺧﻂ http://learn.inoi.irارﺳﺎل ﮐﻨﯿﺪ. • ﻧﺎم ﮐﺎرﺑﺮی ﺷﻤﺎ در ﺳﺎﻣﺎﻧﻪی ﺑﺮﺧﻂ ﺷﻤﺎرهی داﻧﺸﺠﻮﯾﯽ ﺷﻤﺎ ﻣ ﺑﺎﺷﺪ .ﺗﻨﻬﺎ از اﯾﻦ ﻧﺎم ﮐﺎرﺑﺮی اﺳﺘﻔﺎده ﮐﻨﯿﺪ .رﻣﺰ ﺷﻤﺎ ﻣﺘﻌﺎﻗﺒﺎ اﻋﻼم ﺧﻮاﻫﺪ ﺷﺪ. • ﺑﺮﻧﺎﻣﻪﻫﺎی ارﺳﺎﻟ ﻣ ﺑﺎﯾﺴﺖ ﺑﻪ ﯾ ﯾ از ٣زﺑﺎن C++ ،Cﯾﺎ Javaﺑﺎﺷﻨﺪ .دﻗﺖ ﮐﻨﯿﺪ ﮐﻪ ﺑﺎﯾﺪ ﺳﻮرس ﺑﺮﻧﺎﻣﻪ را ﮐﻪ ﺗﻨﻬﺎ در ﻓﺎﯾﻞ آﻣﺪه اﺳﺖ ارﺳﺎل ﮐﻨﯿﺪ و از ارﺳﺎل ﻣﺠﻤﻮﻋﻪ ﻓﺎﯾﻞ ﯾﺎ zipﺷﺪهی آنﻫﺎ ﺧﻮدداری ﻧﻤﺎﯾﯿﺪ .ﻓﺎﯾﻞﻫﺎی ارﺳﺎﻟ ﺑﻪ زﺑﺎن Javaﻣ ﺑﺎﯾﺴﺖ ﺗﻨﻬﺎ ﺷﺎﻣﻞ ﯾ ﮐﻼس publicو دﻗﯿﻘﺎً ﺑﺎ ﻧﺎم progﺑﺎﺷﻨﺪ. • ﺗﻤﺎم ﻓﺎﯾﻞﻫﺎی ارﺳﺎﻟ ﺑﻪ ﺳﺎﻣﺎﻧﻪی داوری در اﻧﺘﻬﺎ ﻣﻮرد ﺑﺮرﺳ ﺗﻘﻠﺐ ﻗﺮار ﺧﻮاﻫﻨﺪ ﮔﺮﻓﺖ .اﻣ ﺎن ﮐﺸﻒ ﺗﻘﻠﺐ ﺣﺘ ﺑﺎ ﺗﻐﯿﯿﺮات ﺑﺴﯿﺎر ﻧﯿﺰ ﺗﻮﺳﻂ اﺑﺰارﻫﺎی ﻣﻮﺟﻮد اﻣ ﺎنﭘﺬﯾﺮ اﺳﺖ .ﺗﻮﺻﯿﻪ ﻣ ﺷﻮد اﮐﯿﺪاً از اﯾﻦ اﻣﺮ ﺧﻮدداری ﮐﻨﯿﺪ. ١ ﻧﺎﺑﻪ ﺟﺎﯾﯽ در ﯾ دﻧﺒﺎﻟﻪ ﺑﻪ ﻃﻮل nاز اﻋﺪاد ﺻﺤﯿﺢ ﻣﺜﺒﺖ ﺑﻪ ﺻﻮرت a١ , a٢ , , anﯾ ﻧﺎﺑﺠﺎﯾﯽ ،زوﺟ ﻣﺎﻧﻨﺪ ) (i, jﻣ ﺑﺎﺷﺪ ﮐﻪ ١ ≤ i < j ≤ nﻣ ﺑﺎﺷﺪ ﮐﻪ ai > a jﺑﺎﺷﺪ .ﺷﻤﺎ ﺑﺎﯾﺪ ﺑﺮﻧﺎﻣﻪ ای ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﺑﺎ ﮔﺮﻓﺘﻦ دﻧﺒﺎﻟﻪ a١ , a٢ , , anﺗﻌﺪاد ﮐﻞ ﻧﺎﺑﺠﺎﯾﯽ ﻫﺎی اﯾﻦ دﻧﺒﺎﻟﻪ را ﺑﺪﺳﺖ آورد. ورودی در ﺧﻂ اول ورودی ﻋﺪد nو در ﺧﻂ دوم nﻋﺪد آﻣﺪه اﻧﺪ ﮐﻪ ﺑﻪ ﺗﺮﺗﯿﺐ ﻧﻤﺎﯾﺸ ﺮ اﻋﺪاد a١ , a٢ , , anﻣﯿﺒﺎﺷﺪ. ﺧﺮوﺟ در ﺗﻨﻬﺎ ﺧﻂ ﺧﺮوﺟ ﺗﻌﺪاد ﻧﺎﺑﺠﺎﯾﯽ ﻫﺎی دﻧﺒﺎﻟﻪ ورودی را ﭼﺎپ ﮐﻨﯿﺪ. ورودی و ﺧﺮوﺟ ﻧﻤﻮﻧﻪ stdin stdout 5 3 2 3 1 5 4 ١ ﻣﺤﺪودﯾﺖﻫﺎ ١ ≤ n ≤ ١٠٠٠٠٠ ١ ≤ ai ≤ ١٠٩ aiﻫﺎ ﻫﻤ ٢ ﻣﺘﻤﺎﯾﺰﻧﺪ ﺗﻮده ﮐﺘﺎب ﻫﺎ nﮐﺘﺎب روی ﻫﻢ ﺑﺮ روی ﯾ • ﯾ ﻣﯿﺰ ﻗﺮار ﮔﺮﻓﺘﻪ اﻧﺪ .دو ﻋﻤﻞ ﺑﺮ روی اﯾﻦ ﮐﺘﺎﺑﻬﺎ ﻣﯿﺘﻮان اﻧﺠﺎم داد. ﮐﺘﺎب ﺟﺪﯾﺪ را ﺑﺮ روی ﻫﻤﻪ ﮐﺘﺎب ﻫﺎ ﻗﺮار داد. • ﺗﺮﺗﯿﺐ kﮐﺘﺎب ﺑﺎﻻی اﯾﻦ ﺗﻮده را ﺑﺮﻋﮑﺲ ﮐﺮد .اﮔﺮ ﮐﻤﺘﺮ از kﮐﺘﺎب ﺑﺮروی ﻣﯿﺰ ﺑﺎﺷﺪ ﺗﺮﺗﯿﺐ ﻫﻤﻪ kﮐﺘﺎب ﺑﺮﻋﮑﺲ ﺧﻮاﻫﺪ ﺷﺪ. ﻋﻤﻞ اول ﺑﺎ ) ADD(sﻣﺸﺨﺺ ﺧﻮاﻫﺪ ﺷﺪ ﮐﻪ sﻧﺎم ﮐﺘﺎب ﻣ ﺑﺎﺷﺪ و ﻋﻤﻞ دوم ﺑﺎ ROTATEﻣﺸﺨﺺ ﺧﻮاﻫﺪ ﺷﺪ .ﺗﻌﺪاد ﮐﻞ ﮐﺘﺎب ﻫﺎ از ۴٠٠٠٠ﺑﯿﺸﺘﺮ ﻧﺨﻮاﻫﺪ ﺑﻮد و اﺳﻢ ﻫﺮ ﮐﺘﺎب ﯾ رﺷﺘﻪ از ﺣﺮوف ﺑﺰرگ اﻟﻔﺒﺎی اﻧﮕﻠﯿﺴ ﺑﺎ ﻃﻮل ﺣﺪاﮐﺜﺮ ٣ ﺧﻮاﻫﺪ ﺑﻮد .ﺷﻤﺎ ﺑﺎﯾﺪ ﺑﺮﻧﺎﻣﻪ ای ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﺑﺎ درﯾﺎﻓﺖ ﺗﺮﺗﯿﺐ ﮐﺘﺎب ﻫﺎ و ﻋﻤﻠﯿﺎت اﻧﺠﺎم ﺷﺪه ﺑﺮ روی آﻧﻬﺎ ﺗﺮﺗﯿﺐ ﻧﻬﺎﯾﯽ آن ﻫﺎ را ﻣﺸﺨﺺ ﮐﻨﺪ. ورودی در ﺧﻂ اول ورودی اﻋﺪاد m ،nو kﻣ آﯾﻨﺪ .در nﺧﻂ ﺑﻌﺪ در ﻫﺮ ﺧﻂ ﻧﺎم ﯾ ﮐﺘﺎب ﻣﻮﺟﻮد ﺑﺮ روی ﻣﯿﺰ ﺑﻪ ﺗﺮﺗﯿﺐ از ﺑﺎﻻ ﺑﻪ ﭘﺎﯾﯿﻦ آﻣﺪه اﺳﺖ .در mﺧﻂ ﺑﻌﺪ از آن در ﻫﺮ ﺧﻂ ﻋﻤﻠﯿﺎت اﻧﺠﺎم ﺷﺪه ﺑﺮ روی ﺗﻮده ﮐﺘﺎب ﻫﺎ ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ ﺧﺮوﺟ در ﺧﺮوﺟ ﺗﺮﺗﯿﺐ ﻧﻬﺎﯾﯽ ﻗﺮار ﮔﺮﻓﺘﻦ ﮐﺘﺎب ﻫﺎ ﭘﺲ از اﻋﻤﺎل ﻋﻤﻠﯿﺎت ﺑﯿﺎن ﺷﺪه در ورودی را ﺑﻨﻮﯾﺴﯿﺪ .در ﻫﺮ ﺧﻂ ﻧﺎم ﯾ ﮐﺘﺎب را ﺑﻪ ﺗﺮﺗﯿﺐ از ﺑﺎﻻﺗﺮﯾﻦ ﮐﺘﺎب ﺗﺎ ﭘﺎﯾﯿﻦ ﺗﺮﯾﻦ ﮐﺘﺎب ﺑﻨﻮﯾﺴﯿﺪ. ورودی و ﺧﺮوﺟ ﻧﻤﻮﻧﻪ stdin stdout D 2 3 2 A A C B B )ADD(C ROTATE )ADD(D ٢ ﻣﺤﺪودﯾﺖﻫﺎ ٠ ≤ n, k ≤ ۴٠٠٠٠ ٠ ≤ m ≤ ١٠٠٠٠٠ ٣
© Copyright 2026 Paperzz