ﺑﺎﺳﻤﻪ ﺗﻌﺎﻟ ﻣﺒﺎﻧ ﺳﺎﺧﺘﻤﺎن دادهﻫﺎ و اﻟ ﻮرﯾﺘﻢﻫﺎ )(۴٠-٢۵۴ Introduction to Data Structures and Algorithms داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ ﻣﺪرس :ﻣﺤﻤﺪ ﻋﻠ آﺑﺎم ﻣﻮﻋﺪ ارﺳﺎل ٣٠ :ﻓﺮوردﯾﻦ ١٣٩١ ﺗﻤﺮﯾﻦ ﻋﻤﻠ ‐ ﺷﻤﺎرهی ٢ • در ﺗﻤﺎم ﺳﻮاﻻت ﻣﺤﺪودﯾﺖ زﻣﺎﻧ ٣ﺛﺎﻧﯿﻪ و ﻣﺤﺪودﯾﺖ ﺣﺎﻓﻈﻪ ٢٠ﻣ ﺎﺑﺎﯾﺖ ﻣ ﺑﺎﺷﺪ. • ﺟﻮاب ﺗﻤﺮﯾﻦﻫﺎ را ﻣ ﺑﺎﯾﺴﺖ از ﻃﺮﯾﻖ ﺳﺎﻣﺎﻧﻪی ﺑﺮﺧﻂ http://learn.inoi.irارﺳﺎل ﮐﻨﯿﺪ. • ﻧﺎم ﮐﺎرﺑﺮی ﺷﻤﺎ در ﺳﺎﻣﺎﻧﻪی ﺑﺮﺧﻂ ﺷﻤﺎرهی داﻧﺸﺠﻮﯾﯽ ﺷﻤﺎ ﻣ ﺑﺎﺷﺪ .ﺗﻨﻬﺎ از اﯾﻦ ﻧﺎم ﮐﺎرﺑﺮی اﺳﺘﻔﺎده ﮐﻨﯿﺪ. • ﺑﺮﻧﺎﻣﻪﻫﺎی ارﺳﺎﻟ ﻣ ﺑﺎﯾﺴﺖ ﺑﻪ ﯾ ﯾ از ٣زﺑﺎن C++ ،Cﯾﺎ Javaﺑﺎﺷﻨﺪ .دﻗﺖ ﮐﻨﯿﺪ ﮐﻪ ﺑﺎﯾﺪ ﺳﻮرس ﺑﺮﻧﺎﻣﻪ را ﮐﻪ ﺗﻨﻬﺎ در ﻓﺎﯾﻞ آﻣﺪه اﺳﺖ ارﺳﺎل ﮐﻨﯿﺪ و از ارﺳﺎل ﻣﺠﻤﻮﻋﻪ ﻓﺎﯾﻞ ﯾﺎ zipﺷﺪهی آنﻫﺎ ﺧﻮدداری ﻧﻤﺎﯾﯿﺪ .ﻓﺎﯾﻞﻫﺎی ارﺳﺎﻟ ﺑﻪ زﺑﺎن Javaﻣ ﺑﺎﯾﺴﺖ ﺗﻨﻬﺎ ﺷﺎﻣﻞ ﯾ ﮐﻼس publicو دﻗﯿﻘﺎ ﺑﺎ ﻧﺎم progﺑﺎﺷﻨﺪ. • ﺗﻤﺎم ﻓﺎﯾﻞﻫﺎی ارﺳﺎﻟ ﺑﻪ ﺳﺎﻣﺎﻧﻪی داوری در اﻧﺘﻬﺎ ﻣﻮرد ﺑﺮرﺳ ﺗﻘﻠﺐ ﻗﺮار ﺧﻮاﻫﻨﺪ ﮔﺮﻓﺖ .اﻣ ﺎن ﮐﺸﻒ ﺗﻘﻠﺐ ﺣﺘ ﺑﺎ ﺗﻐﯿﯿﺮات ﺑﺴﯿﺎر ﻧﯿﺰ ﺗﻮﺳﻂ اﺑﺰارﻫﺎی ﻣﻮﺟﻮد اﻣ ﺎنﭘﺬﯾﺮ اﺳﺖ .ﺗﻮﺻﯿﻪ ﻣ ﺷﻮد اﮐﯿﺪا از اﯾﻦ اﻣﺮ ﺧﻮدداری ﮐﻨﯿﺪ. ١ رزم آﺧﺮ دو ﮐﺸﻮر ﺳﯿﺎهﺟﺎﻣ ﺎن و ﺳﻔﯿﺪﺟﺎﻣ ﺎن ﮐﻪ ﺳﺎﻟﻬﺎﺳﺖ در ﺣﺎل ﻧﺒﺮد ﺑﺎ ﯾ ﺪﯾ ﺮﻧﺪ ،ﺗﺼﻤﯿﻢ ﮔﺮﻓﺘﻪ اﻧﺪ ﮐﻪ ﺑﺎﻻﺧﺮه ﻧﺘﯿﺠﻪ ﺟﻨﮓ را ﺑﺎ ﻧﺒﺮد ﺗﻦ ﺑﻪ ﺗﻦ ﻣﻌﻠﻮم ﮐﻨﻨﺪ. ﻣﺮاﺳﻢ ﻧﺒﺮد ﺗﻦ ﺑﻪ ﺗﻦ ﮐﻼ ﺑﻪ اﯾﻦ ﺻﻮرت اﺳﺖ ﮐﻪ ﻫﺮ ﮐﺸﻮر ﺗﻌﺪادی از ﻗﻮیﺗﺮﯾﻦ ﺟﻨﮓ ﺟﻮﯾﺎن ﺧﻮد را در آن روز ﺑﻪ ﻣﯿﺪان ﻣ آورد .در ﻫﺮ ﻣﺮﺣﻠﻪ ،رزﻣ ﺑﯿﻦ ﻗﻮی ﺗﺮﯾﻦ ﺟﻨﮓ ﺟﻮی ﺑﺎﻗ ﻣﺎﻧﺪه از ﮐﺸﻮر ﺳﯿﺎه ﺟﺎﻣ ﺎن و ﻗﻮی ﺗﺮﯾﻦ ﺟﻨﮓ ﺟﻮی ﺑﺎﻗ ﻣﺎﻧﺪه از ﮐﺸﻮر ﺳﻔﯿﺪﺟﺎﻣ ﺎن ﺻﻮرت ﻣ ﮔﯿﺮد.ﻫﺮ ﺟﻨﮓ ﺟﻮ ﻗﺪرﺗ دارد ﮐﻪ ﺑﺎ اﺳﺘﻔﺎده از آن ﻣ ﺗﻮان ﻓﻬﻤﯿﺪ ﮐﻪ ﻗﻮیﺗﺮﯾﻦ ﺟﻨﮓ ﺟﻮی ﺑﺎﻗ ﻣﺎﻧﺪه ﮐﯿﺴﺖ .اﮔﺮ در ﯾ رزم ،ﺟﻨﮓ ﺟﻮﯾﯽ ﺑﺎ ﻗﺪرت Pﺑﺎ ﺟﻨﮓ ﺟﻮﯾﯽ ﺑﺎ ﻗﺪرت Qدراﻓﺘﺪ ﺑﻪ ﻃﻮری ﮐﻪ P > Qﺑﺎﺷﺪ، ﺟﻨﮓ ﺟﻮی ﺑﺎ ﻗﺪرت Qﮐﺸﺘﻪ ﺷﺪه و ﻗﺪرت ﺟﻨﮓ ﺟﻮی دﯾ ﺮ ﻧﯿﺰ ﺑﻪ اﻧﺪازه Qﮐﺎﻫﺶ ﻣ ﯾﺎﺑﺪ .در ﻧﻬﺎﯾﺖ ﮐﺸﻮری ﺑﺎزﻧﺪه اﺳﺖ ﮐﻪ ﻫﯿﭻ ﯾ از ﺟﻨﮓ ﺟﻮﯾﺎﻧﺶ زﻧﺪه ﻧﻤﺎﻧﻨﺪ) .اﮔﺮ ﻗﺪرت ﻫﺮ دو ﺟﻨﮕﺠﻮ ﺑﺮاﺑﺮ ﺑﺎﺷﺪ ﻫﺮ دو در اﯾﻦ ﻧﺒﺮد ﺗﻠﻒ ﻣ ﺷﻮﻧﺪ(. ﺣﺎل ﻣﺎ ﻣ ﺧﻮاﻫﯿﻢ ﻗﺒﻞ از اﯾﻦ ﮐﻪ ﻧﺒﺮد آﻏﺎز ﺷﻮد ،ﻣﺘﻮﺟﻪ ﺷﻮﯾﻢ ﮐﻪ ﭼﻪ ﮐﺸﻮری ﭘﯿﺮوز ﻣﯿﺪان اﺳﺖ. ورودی در ﺧﻂ اول ورودی ،N ،ﺗﻌﺪاد ﺟﻨﮓ ﺟﻮﯾﺎن ﮐﺸﻮر ﺳﻔﯿﺪ ﺟﺎﻣ ﺎن آﻣﺪه اﺳﺖ .در ﺧﻂ ﺑﻌﺪ N ،ﻋﺪد ﺻﺤﯿﺢ ﻣﺜﺒﺖ آﻣﺪه ﮐﻪ ﻋﺪد iام ،Pi ،ﻧﺸﺎن دﻫﻨﺪه ﻗﺪرت ﺟﻨﮓ ﺟﻮی iام از ﮐﺸﻮر ﺳﻔﯿﺪﺟﺎﻣ ﺎن اﺳﺖ .ﺳﭙﺲ در ﺧﻂ ﺳﻮم ،M ،ﺗﻌﺪاد ﺟﻨﮓ ﺟﻮﯾﺎن ﮐﺸﻮر ﺳﯿﺎهﺟﺎﻣ ﺎن آﻣﺪه اﺳﺖ .ﻧﻬﺎﯾﺘﺎ در ﺧﻂ ﭼﻬﺎرم M ،ﻋﺪد آﻣﺪه اﺳﺖ ﮐﻪ ﻋﺪد iام ،Qi ،ﻧﺸﺎن دﻫﻨﺪه ﻗﺪرت ﺟﻨﮓ ﺟﻮﯾﺎن ارﺗﺶ ﺳﯿﺎه ﺟﺎﻣ ﺎن آﻣﺪه اﺳﺖ. ١ ﺧﺮوﺟ در ﺧﻂ اول در ﺻﻮرﺗ ﮐﻪ ﮐﺸﻮر ﺳﻔﯿﺪﺟﺎﻣ ﺎن ﭘﯿﺮوز ﻣﯿﺪان ﺧﻮاﻫﺪ ﺑﻮد ،ﻋﺒﺎرت Whiteو در ﺻﻮرﺗ ﮐﻪ ﮐﺸﻮر ﺳﯿﺎه ﺟﺎﻣ ﺎن ﺑﺮﻧﺪه اﺳﺖ ،ﻋﺒﺎرت Blackرا ﭼﺎپ ﮐﻨﯿﺪ .ﺳﭙﺲ در ﺧﻂ دوم ﺗﻌﺪاد ﺟﻨﮓ ﺟﻮﯾﺎﻧ را ﮐﻪ از ﮐﺸﻮر ﺑﺮﻧﺪه ،زﻧﺪه ﺑﺎﻗ ﻣﺎﻧﺪهاﻧﺪ را ﭼﺎپ ﮐﻨﯿﺪ و در ﺧﻂ ﺳﻮم ﻗﺪرت ﻫﺮ ﯾ ﻳ از اﯾﻦ ﺟﻨﮕﺠﻮﻫﺎی زﻧﺪه را ﭘﺲ از ﻧﺒﺮد از ﮐﻮﭼ ﺑﻪ ﺑﺰرگ ﺑﻨﻮﯾﺴﯿﺪ و آنﻫﺎ را ﺑﺎ ﻓﺎﺻﻠﻪ از ﻫﻢ ﺟﺪا ﮐﻨﻴﺪ. ﻣﺤﺪودﯾﺖﻫﺎ ١ ≤ N, M ≤ ١٠۵ ١ ≤ Pi , Qi ≤ ١٠٩ ورودی و ﺧﺮوﺟ ﻧﻤﻮﻧﻪ stdin stdout Black 4 1 1 2 3 4 1 2 10 1 ٢درﺧﺖ دودوﯾﯽ ﮐﺎرﺗﺰﯾﻦ ﺑ ﺬارﯾﺪ ﻧﻮع ﺧﺎﺻ از درﺧﺖ دودوﯾﯽ ﺟﺴﺘﺠﻮ ١ﺑﻪ ﻧﺎم درﺧﺖﻫﺎی ﮐﺎرﺗﺰﯾﻦ ﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ .ﯾ ﯾ درﺧﺖ ﮐﺎرﺗﺰﯾﻦ ﺧﺎﺻﯿﺖﻫﺎی درﺧﺖ دودوﯾﯽ ﺟﺴﺘﺠﻮ را داراﺳﺖ .ﯾﻌﻨ ﻫﺮ ﮔﺮه دارای keyاﺳﺖ؛ و اﮔﺮ ﮔﺮهی uدر زﯾﺮدرﺧﺖ ﭼﭗ ﮔﺮهی vﺑﺎﺷﺪ دارﯾﻢ .keyu < keyvﺑﺮﻋﮑﺲ ،اﮔﺮ ﮔﺮهی uدر زﯾﺮدرﺧﺖ راﺳﺖ ﮔﺮهی vﺑﺎﺷﺪ دارﯾﻢ .keyv < keyu ﮔﺮهﻫﺎی درﺧﺖ ﮐﺎرﺗﺰﯾﻦ ﻋﻼوه ﺑﺮ keyﻣﻘﺪار valueﻫﻢ دارﻧﺪ .ﺧﺎﺻﯿﺖ ﻣﻘﺎدﯾﺮ valueﮔﺮهﻫﺎ اﯾﻦ اﺳﺖ ﮐﻪ اﮔﺮ ﮔﺮهی uﯾ از ﺑﭽﻪﻫﺎی ﮔﺮهی vﺑﺎﺷﺪ آﻧﮕﺎه دارﯾﻢ . valuev < valueuﺑﻪ ﻃﻮر ﺷﻬﻮدی ﻣﻘﺪار valueی ﮔﺮهﻫﺎ ﺧﺎﺻﯿﺖ ﯾ درﺧﺖ ﻫﺮﻣ ﮐﻤﯿﻨﻪ ٢را دارد. ﺣﺎل از ﺷﻤﺎ ﻣ ﺧﻮاﻫﯿﻢ ﺑﺮﻧﺎﻣﻪای ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﻣﻘﺎدﯾﺮ keyو valueی ﮔﺮهﻫﺎ را ﺑ ﯿﺮد؛ ﺳﭙﺲ ﺑ ﻮﯾﺪ آﯾﺎ ﻣ ﺗﻮان ﺑﺎ اﯾﻦ ﮔﺮهﻫﺎ ﯾ درﺧﺖ ﮐﺎرﺗﺰﯾﻦ ﺳﺎﺧﺖ؟ اﮔﺮ ﻣ ﺗﻮان ﺳﺎﺧﺖ درﺧﺖ ﻧﻬﺎﯾﯽ ﺑﻪ ﭼﻪ ﺷ ﻠ ﺧﻮاﻫﺪ ﺷﺪ. Binary Search Tree١ heap min٢ ٢ ورودی در ﺧﻂ اول ورودی ﺗﻨﻬﺎ ﻋﺪد nآﻣﺪه اﺳﺖ ﮐﻪ ﺗﻌﺪاد ﮔﺮهﻫﺎی درﺧﺖ اﺳﺖ .در nﺧﻂ ﺑﻌﺪی در ﻫﺮ ﺧﻂ دو ﻋﺪد ﺻﺤﯿﺢ آﻣﺪه اﺳﺖ ﮐﻪ ﻋﺪد اول ،keyو ﻋﺪد دوم valueی ﮔﺮهی iام اﺳﺖ. ﺧﺮوﺟ در ﺻﻮرﺗ ﮐﻪ ﺑﺎ nﮔﺮهی داده ﺷﺪه ﻣ ﺗﻮان ﯾ درﺧﺖ ﮐﺎرﺗﺰﯾﻦ ﺳﺎﺧﺖ در ﺳﻄﺮ اول ﺧﺮوﺟ ﻋﺒﺎرت YESدر ﻏﯿﺮ اﯾﻦ ﺻﻮرت NOﭼﺎپ ﮐﻨﯿﺪ. درﺧﺖ ﮐﺎرﺗﺰﯾﻦ ﺳﺎﺧﺖ در nﺧﻂ ﺑﻌﺪی ﺧﻮد درﺧﺖ را ﭼﺎپ ﮐﻨﯿﺪ .ﻧﺤﻮهی ﭼﺎپ ﮐﺮدن درﺧﺖ اﮔﺮ ﺑﺎ اﯾﻦ nﮔﺮه ﻣ ﺗﻮان ﯾ ﺑﻪ اﯾﻦ ﺻﻮرت اﺳﺖ ﮐﻪ ﮔﺮهﻫﺎﯾﯽ ﮐﻪ در ورودی آﻣﺪه را ﺑﻪ ﻫﻤﺎن ﺗﺮﺗﯿﺐ از ١ﺗﺎ nﺷﻤﺎرهﮔﺬاری ﮐﻨﯿﺪ .ﺑﺮای ﻫﺮ ﮔﺮه ،در ﯾ ﺳﻄﺮ ﻣﺠﺰا ﺳﻪ ﻋﺪد ﭼﺎپ ﮐﻨﯿﺪ .ﺷﻤﺎرهی ﭘﺪر اﯾﻦ ﮔﺮه ،ﺑﭽﻪی ﭼﭗ اﯾﻦ ﮔﺮه و ﺑﭽﻪی راﺳﺖ اﯾﻦ ﮔﺮه را ﭼﺎپ ﮐﻨﯿﺪ .در ﺻﻮرﺗ ﮐﻪ ﯾ ﮔﺮه ﻓﺎﻗﺪ ﮔﺮهی ﭘﺪر ﯾﺎ ﮔﺮهی ﺑﭽﻪی ﻣﺮﺑﻮﻃﻪ اﺳﺖ ﺟﺎی آن ﺻﻔﺮ ﭼﺎپ ﮐﻨﯿﺪ. اﮔﺮ ﭼﻨﺪﯾﻦ درﺧﺖ ﮐﺎرﺗﺰﯾﻦ ﻣﻤ ﻦ ﺑﺮای ﭼﺎپ وﺟﻮد دارد ،ﻫﺮ ﮐﺪام را ﮐﻪ ﺧﻮاﺳﺘﯿﺪ ﭼﺎپ ﮐﻨﯿﺪ. ﻣﺤﺪودﯾﺖﻫﺎ ١ ≤ n ≤ ١٠٣ ١ ≤ keyi , valuei ≤ ١٠٩ ∀i 6= j : keyi 6= key j , valuei 6= value j ورودی و ﺧﺮوﺟ ﻧﻤﻮﻧﻪ stdin stdout YES 7 2 3 6 5 4 0 5 1 2 2 1 0 7 3 9 5 0 0 0 5 2 4 0 1 3 1 0 0 6 6 3 0 0 4 11 ٣
© Copyright 2025 Paperzz