DS921-HW2.pdf

‫ﺑﺎﺳﻤﻪ ﺗﻌﺎﻟ‬
‫دادهﺳﺎﺧﺘﺎرﻫﺎ و ﻣﺒﺎﻧ اﻟ ﻮرﯾﺘﻢﻫﺎ )‪(۴٠-٢۵۴‬‬
‫‪Data Structures and Fundamentals of Algorithms‬‬
‫داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ‬
‫ﻣﺪرس‪ :‬ﻣﺤﻤﺪ ﻗﺪﺳ‬
‫ﺗﻤﺮﯾﻦ ﺷﻤﺎرهی ‪٢‬‬
‫‪ .١‬ﺑﺎ ﮐﻤ‬
‫ﯾ‬
‫ﻣﻮﻋﺪ ارﺳﺎل‪١٣٩٢/٨/٣ :‬‬
‫آراﯾﻪ ﺑﻪ اﻧﺪازهی ‪ N‬دو ﭘﺸﺘﻪ ﭘﯿﺎدهﺳﺎزی ﮐﻨﯿﺪ ﮐﻪ ﺑﻪ ﻃﻮر ﻫﻤﺰﻣﺎن‪ ،‬ﻫﺮ دو از ﻋﻤﻠﯿﺎت ‪ push‬و ‪pop‬‬
‫ﭘﺸﺘﯿﺒﺎﻧ ﮐﻨﻨﺪ‪ .‬اﻟ ﻮرﯾﺘﻤ ﮐﻪ اراﺋﻪ ﻣ دﻫﯿﺪ ﻓﻘﻂ وﻗﺘ ﮐﻪ ﻣﺠﻤﻮع اﻧﺪازه ﻋﻨﺎﺻﺮ دو ﭘﺸﺘﻪ ﺑﯿﺸﺘﺮ از ‪ N‬ﺑﺎﺷﺪ‪ ،‬ﺑﺎﯾﺪ ﺧﻄﺎی‬
‫‪ Stack Over Flow‬را اﻋﻼم ﮐﻨﺪ‪ .‬ﺷﺒﻪ ﮐﺪ اﻟ ﻮرﯾﺘﻢ ﺧﻮد را ﺑﻨﻮﯾﺴﯿﺪ‪.‬‬
‫‪ .٢‬ﻫﻤﺎﻧﻄﻮر ﮐﻪ ﻣ داﻧﯿﺪ اﻟ ﻮرﯾﺘﻢ ‪ Insertion Sort‬ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ‪:‬‬
‫‪Algorithm 1 Insertion Sort‬‬
‫‪for j ← 2 to length[A] do‬‬
‫‪1:‬‬
‫]‪Find position of A[j] in sorted subArray A[1] to A[j − 1‬‬
‫‪2:‬‬
‫‪Insert A[j] into Founded position‬‬
‫‪3:‬‬
‫‪end for‬‬
‫‪4:‬‬
‫در ﮐﻼس ﺑﻪ ﺷﻤﺎ ﮔﻔﺘﻪ ﺷﺪه اﯾﻦ اﻟ ﻮرﯾﺘﻢ از ) ‪O(n٢‬اﺳﺖ‪ .‬اﮔﺮ ﺑﺘﻮاﻧﯿﻢ ﺧﻂﻫﺎی ‪ ٢‬و ‪ ٣‬را ﻃﻮری ﺗﻐﯿﯿﺮ دﻫﯿﻢ ﮐﻪ در‬
‫زﻣﺎن ﺑﻬﺘﺮی اﻧﺠﺎم ﺷﻮﻧﺪ‪ ،‬زﻣﺎن ﮐﻞ اﻟ ﻮرﯾﺘﻢ ﺑﻬﺘﺮ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫اﻟﻒ( ﺑﺎ ﮐﻤ‬
‫ﺟﺴﺘﺠﻮی دودوﯾ ‪ ،‬زﻣﺎن اﺟﺮای ﺧﻂ ‪ ٢‬را ﺑﻬﺘﺮ ﮐﻨﯿﺪ‪ .‬آﯾﺎ اﮔﺮ اﻋﺪاد را در آراﯾﻪای ﻧ ﻪ داﺷﺘﻪ ﺑﺎﺷﯿﻢ‪،‬‬
‫زﻣﺎن ﮐﻠ اﻟ ﻮرﯾﺘﻢ ﺑﻬﺘﺮ ﺧﻮاﻫﺪ ﺷﺪ؟‬
‫ب( ﻓﺮض ﮐﻨﯿﺪ اﻋﺪاد در دادهﺳﺎﺧﺘﺎر ﻟﯿﺴﺖ ﭘﯿﻮﻧﺪی ﻧ ﻪ داﺷﺘﻪ ﺷﺪهاﻧﺪ‪ .‬زﻣﺎن ﮐﻞ اﻟ ﻮرﯾﺘﻢ را ﺗﺤﻠﯿﻞ ﮐﻨﯿﺪ‪.‬‬
‫‪ .٣‬ﯾ‬
‫ﻟﯿﺴﺖ ﭘﯿﻮﻧﺪی از اﻋﺪاد دارﯾﻢ ﮐﻪ در آن ﻫﺮ ﻋﻀﻮ ﺗﻨﻬﺎ ﺑﻪ ﻋﻀﻮ ﺑﻌﺪی دﺳﺘﺮﺳ دارد‪ .‬روﺷ ﮐﺎرا اراﺋﻪ دﻫﯿﺪ ﮐﻪ ﺑﺪون‬
‫ﺗﻐﯿﯿﺮ در ﺳﺎﺧﺘﺎر ﻟﯿﺴﺖ و ﺗﻨﻬﺎ ﺑﺎ اﺳﺘﻔﺎده از )‪ O(١‬ﺣﺎﻓﻈﻪ اﺿﺎﻓ ﻣﺸﺨﺺ ﮐﻨﺪ آﯾﺎ در اﯾﻦ ﻟﯿﺴﺖ دور وﺟﻮد دارد ﯾﺎ ﺧﯿﺮ‬
‫)ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﻻزم اﺳﺖ ﺳﺎﺧﺘﺎر ﻟﯿﺴﺖ در ﻃﻮل اﺟﺮای اﻟ ﻮرﯾﺘﻢ ﺛﺎﺑﺖ ﺑﻤﺎﻧﺪ و ﯾ ﺴﺎن ﻣﺎﻧﺪن آن ﺗﻨﻬﺎ در اﺑﺘﺪا و اﻧﺘﻬﺎ‬
‫ﮐﺎﻓ ﻧﯿﺴﺖ(‪.‬‬
‫‪ .۴‬ﯾ ﻟﯿﺴﺖ ﭘﯿﻮﻧﺪی ﯾ ﻄﺮﻓﻪ ﺑﺎ ‪ N‬ﮔﺮه دارﯾﻢ‪ .‬ﯾ ﻄﺮﻓﻪ ﺑﻮدن ﯾﻌﻨ ﺑﺮای ﻫﺮ ﮔﺮه آن‪ ،‬ﻓﻘﻂ اﺷﺎرهﮔﺮ ﺑﻪ ﮔﺮه ﺑﻌﺪی آن را‬
‫√‬
‫دارﯾﻢ‪ .‬اﻟ ﻮرﯾﺘﻤ اراﺋﻪ دﻫﯿﺪ ﮐﻪ ﺑﺎ ﭘﯿﺶﭘﺮدازﺷ در زﻣﺎن ) ‪ O(N‬ﺗﻐﯿﯿﺮی در ﻟﯿﺴﺖ اﯾﺠﺎد ﮐﻨﺪ‪ ،‬ﮐﻪ ﺑﺘﻮان در ) ‪O( N‬‬
‫√‬
‫ﺑﻪ ﻋﻨﺼﺮ ﻗﺒﻠ ﻫﺮ ﻋﻨﺼﺮ دﺳﺘﺮﺳ داﺷﺖ‪ .‬ﺷﻤﺎ ﻓﻘﻂ ﻣﺠﺎز ﺑﻪ اﺳﺘﻔﺎده از ) ‪ O( N‬ﺣﺎﻓﻈﻪی ﺟﺪﯾﺪ ﻫﺴﺘﯿﺪ‪.‬‬
‫‪ .۵‬ﯾ‬
‫ﺷﻤﺎرﻧﺪۀ ‪ k‬ﺑﯿﺘ را در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ )ﺑﯿﺖ ﺑﺎ اﻧﺪﯾﺲ ‪ ٠‬ﮐﻢ ارزشﺗﺮﯾﻦ ﺑﯿﺖ اﺳﺖ( ﮐﻪ ﻣﻘﺪار اوﻟﯿﮥ آن ‪ ٠‬اﺳﺖ‪ .‬ﺗﻨﻬﺎ‬
‫ﻋﻤﻠ ﮐﻪ ﺑﺮ روی اﯾﻦ داده ﺳﺎﺧﺘﺎر اﻧﺠﺎم ﻣ ﺷﻮد‪ ،‬اﻓﺰاﯾﺶ ‪ ١‬واﺣﺪ ﺑﻪ آن اﺳﺖ‪ .‬ﺷﺒﻪ ﮐﺪ روﯾﻪ ‪) increment‬ﻋﻤﻞ اﻓﺰاﯾﺶ(‬
‫را ﺑﻨﻮﯾﺴﯿﺪ‪.‬‬
‫اﻟﻒ( ﺛﺎﺑﺖ ﮐﻨﯿﺪ ﻫﺰﯾﻨﮥ ﻫﺮ ﻋﻤﻞ اﻓﺰاﯾﺶ ﺑﻪ ﻃﻮر ﺳﺮﺷ ﻨ )‪ O(١‬اﺳﺖ‪.‬‬
‫‪١‬‬
‫ب( ﻧﺸﺎن دﻫﯿﺪ اﮔﺮ ﻋﻤﻞ ‪ decrement‬را ﺑﻪ ﺷﻤﺎرﻧﺪه اﺿﺎﻓﻪ ﮐﻨﯿﻢ دﯾ ﺮ ﻫﺰﯾﻨﮥ ﺳﺮﺷ ﻨ ﻟﺰوﻣﺎً )‪ O(١‬ﻧﯿﺴﺖ‪ .‬وﻟ اﮔﺮ‬
‫از ﺳﯿﺴﺘﻢ ﻧﻤﺎﯾﺶ دﯾ ﺮی ﮐﻪ در آن ﻫﺮ رﻗﻢ ‪ ١ ،٠‬ﯾﺎ ‪ ٢‬اﺳﺖ اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪ ،‬ﻣ ﺗﻮان اﯾﻦ دو ﻋﻤﻞ را ﻃﻮری ﭘﯿﺎده ﺳﺎزی‬
‫ﮐﺮد ﮐﻪ ﻫﺰﯾﻨﮥ ﺳﺮﺷ ﻨ ﻫﺮ ﯾ‬
‫ﺛﺎﺑﺖ ﺑﺎﺷﺪ‪.‬‬
‫‪ .۶‬داده ﺳﺎﺧﺘﺎر آراﯾﻪ ﭘﻮﯾﺎ ‪ ١‬را در ﯾ‬
‫از زﺑﺎنﻫﺎی ‪ C++‬ﯾﺎ ‪ Java‬ﭘﯿﺎدهﺳﺎزی ﮐﻨﯿﺪ ‪ .٢‬ﻣﺸﺨﺺ اﺳﺖ ﮐﻪ اﺳﺘﻔﺎده از‬
‫دادهﺳﺎﺧﺘﺎرﻫﺎی اﯾﻦ زﺑﺎنﻫﺎ ﻣﺠﺎز ﻧﯿﺴﺖ و ﺷﻤﺎ ﻓﻘﻂ ﺑﺎ ﮐﻤ‬
‫آراﯾﻪﻫﺎ و ﻣﺘﻐﯿﺮﻫﺎی ﺳﺎده ﺑﺎﯾﺪ اﯾﻦ ﺑﺮﻧﺎﻣﻪ را ﭘﯿﺎدهﺳﺎزی‬
‫ﮐﻨﯿﺪ‪.‬‬
‫اﻟﻒ( داده ﺳﺎﺧﺘﺎر آراﯾﻪ ﭘﻮﯾﺎ را ﻃﻮری ﭘﯿﺎدهﺳﺎزی ﮐﻨﯿﺪ ﮐﻪ از دﺳﺘﻮرات زﯾﺮ ﺑﺼﻮرت ﺳﺮﺷ ﻦ در )‪ O(١‬ﭘﺸﺘﯿﺒﺎﻧ ﮐﻨﺪ‪.‬‬
‫ورودی و ﺧﺮوﺟ ‪ :‬در ﺧﻂ اول ورودی ﻋﺪد ‪ t‬ﺗﻌﺪاد دﺳﺘﻮرﻫﺎﯾ ﮐﻪ ﺑﻪ ﺑﺮﻧﺎﻣﻪی ﺷﻤﺎ داده ﺧﻮاﻫﺪ ﺷﺪ‪ ،‬ﻣ آﯾﺪ‪ .‬در ‪t‬‬
‫ﺧﻂ ﺑﻌﺪی‪ ،‬در ﻫﺮ ﺧﻂ‪ ،‬ﯾ‬
‫از دﺳﺘﻮرات زﯾﺮ ﺧﻮاﻫﺪ آﻣﺪ‪.‬‬
‫• ‪ :Push back a‬ﻋﺪد ‪ a‬را ﺑﻪ اﻧﺘﻬﺎی آراﯾﻪ اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ و ﻣﻘﺪار ‪ Capacity‬و ‪ Size‬آراﯾﻪ را ﺑﺮوز ﻣ ﮐﻨﺪ‪.‬‬
‫• ‪ :Size‬اﻧﺪازهی آراﯾﻪ را در ﺧﺮوﺟ ﭼﺎپ ﮐﻨﯿﺪ‪.‬‬
‫• ‪ :Capacity‬ﻇﺮﻓﯿﺖ آراﯾﻪ را در ﺧﺮوﺟ ﭼﺎپ ﮐﻨﯿﺪ‪.‬‬
‫• ‪ :Pop back‬ﻋﻨﺼﺮ اﻧﺘﻬﺎﯾ آراﯾﻪ را ﭘﺎک ﻣ ﮐﻨﺪ و ﻣﻘﺪار ‪ Capacity‬و ‪ Size‬آراﯾﻪ را ﺑﺮوز ﻣ ﮐﻨﺪ‪.‬‬
‫• ‪ :Get i‬ﻋﻨﺼﺮ ‪i‬ام آراﯾﻪ را در ﺧﺮوﺟ ﭼﺎپ ﻣ ﮐﻨﺪ )‪.(٠ ≤ i < size‬‬
‫‪Size‬‬
‫دﻗﺖ ﮐﻨﯿﺪ ﮐﻪ ‪ Capacity‬در اﺑﺘﺪا ‪ ١‬اﺳﺖ و اﮔﺮ ﻫﻨ ﺎم ‪ push‬ﻧﺴﺒﺖ ‪= ١‬‬
‫‪Capacity‬‬
‫‪Size‬‬
‫ﺑﺎﺷﺪ‪ Capacity ،‬ﻧﺼﻒ ﺧﻮاﻫﺪ ﺷﺪ )دﻗﺖ ﮐﻨﯿﺪ‬
‫ﺧﻮاﻫﺪ ﺷﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ ﻫﺮﮔﺎه ﺑﻌﺪ از ﭘﺎک ﮐﺮدن ‪< ١/۴‬‬
‫‪Capacity‬‬
‫ﮐﻪ ‪ Capacity‬اﻧﺪازه آراﯾﻪای اﺳﺖ ﮐﻪ ﻋﻨﺎﺻﺮ در آن ﻧ ﻬﺪاری ﻣ ﺷﻮﻧﺪ(‪.‬‬
‫ﺑﺎﺷﺪ‪ Capacity ،‬دو ﺑﺮاﺑﺮ‬
‫ورودی و ﺧﺮوﺟ ﻧﻤﻮﻧﻪ‪:‬‬
‫‪١‬‬
‫‪٢‬ﺑﺮای آﺷﻨﺎﯾ ﺑﯿﺸﺘﺮ ﺑﺎ اﯾﻦ داده ﺳﺎﺧﺘﺎر ﻣ ﺗﻮاﻧﯿﺪ ﺑﻪ اﯾﻦ ﻟﯿﻨ‬
‫‪Dynamic Array‬‬
‫ﻣﺮاﺟﻌﻪ ﮐﻨﯿﺪ‪http://en.wikipedia.org/wiki/Dynamic_array :‬‬
‫‪٢‬‬
‫‪stdin‬‬
‫‪stdout‬‬
‫‪1‬‬
‫‪10‬‬
‫‪0‬‬
‫‪Capacity‬‬
‫‪1‬‬
‫‪Size‬‬
‫‪2‬‬
‫‪Push back 1‬‬
‫‪4‬‬
‫‪Size‬‬
‫‪3‬‬
‫‪Push back 2‬‬
‫‪Push back 3‬‬
‫‪Get 1‬‬
‫‪Capacity‬‬
‫‪Size‬‬
‫‪5‬‬
‫‪10‬‬
‫‪8‬‬
‫‪Push back 1‬‬
‫‪4‬‬
‫‪Push back 2‬‬
‫‪8‬‬
‫‪Push back 3‬‬
‫‪Push back 4‬‬
‫‪Push back 5‬‬
‫‪Get 4‬‬
‫‪Capacity‬‬
‫‪Pop back‬‬
‫‪Get 3‬‬
‫‪Capacity‬‬
‫ﻣﺤﺪودﯾﺖﻫﺎ‪:‬‬
‫• ‪١ ≤ t ≤ ١٠۶‬‬
‫• ﺗﻤﺎم اﻋﺪاد ورودی در ﺑﺎزه ] ‪ [−١٠٩ , ١٠٩‬ﻫﺴﺘﻨﺪ‪.‬‬
‫ب( در اﯾﻦ ﻗﺴﻤﺖ‪ ،‬داده ﺳﺎﺧﺘﺎر ﻗﺴﻤﺖ )اﻟﻒ( را ﺑﻪﮔﻮﻧﻪای ﺗﻐﯿﯿﺮ دﻫﯿﺪ ﮐﻪ از دﺳﺘﻮرات زﯾﺮ ﻧﯿﺰ ﺑﺼﻮرت ﺳﺮﺷ ﻦ در‬
‫)‪ O(١‬ﭘﺸﺘﯿﺒﺎﻧ ﮐﻨﺪ‪.‬‬
‫• ‪ :Push front a‬ﻋﺪد ‪ a‬را ﺑﻪ اﺑﺘﺪای آراﯾﻪ اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ و ﻣﻘﺪار ‪ Capacity‬و ‪ size‬آراﯾﻪ را ﺑﺮوز ﻣ ﮐﻨﺪ‪.‬‬
‫• ‪ :Pop front‬ﻋﺪد اﺑﺘﺪاﯾ آراﯾﻪ را ﭘﺎک ﻣ ﮐﻨﺪ و ﻣﻘﺪار ‪ Capacity‬و ‪ size‬آراﯾﻪ را ﺑﺮوز ﻣﯿ ﻨﺪ‪.‬‬
‫ورودی و ﺧﺮوﺟ ﻧﻤﻮﻧﻪ‪:‬‬
‫‪٣‬‬
‫‪stdin‬‬
‫‪stdout‬‬
‫‪1‬‬
‫‪9‬‬
‫‪3‬‬
‫‪Push back 1‬‬
‫‪1‬‬
‫‪Push front 2‬‬
‫‪4‬‬
‫‪Push back 3‬‬
‫‪Pop front‬‬
‫‪Get 0‬‬
‫‪Get 1‬‬
‫‪Push front -1‬‬
‫‪Get 1‬‬
‫‪Capacity‬‬
‫‪3‬‬
‫‪11‬‬
‫‪4‬‬
‫‪Push back 1‬‬
‫‪4‬‬
‫‪Push back 2‬‬
‫‪4‬‬
‫‪Pop front‬‬
‫‪Push front 3‬‬
‫‪Pop back‬‬
‫‪Push back 4‬‬
‫‪Get 0‬‬
‫‪Get 1‬‬
‫‪Pop front‬‬
‫‪Get 0‬‬
‫‪Get 1‬‬
‫ﻣﺤﺪودﯾﺖﻫﺎ‪:‬‬
‫• ‪١ ≤ t ≤ ١٠۶‬‬
‫• ﺗﻤﺎم اﻋﺪاد ورودی در ﺑﺎزه ] ‪ [−١٠٩ , ١٠٩‬ﻫﺴﺘﻨﺪ‪.‬‬
‫‪ .٧‬اﻟﻒ( ﺷﻬﺮ اﺗﻮﭘﯿﺎ‪ N ،‬ﮐﻮه ﺑﺎ ارﺗﻔﺎعﻫﺎی ‪ h١ , h٢ , . . . , hN‬دارد‪ .‬ﻣ ﺧﻮاﻫﯿﻢ در اﯾﻦ ﺷﻬﺮ ﯾ‬
‫ﺧﻂ ﺗﻠﻪﮐﺎﺑﯿﻦ راهاﻧﺪازی‬
‫ﮐﻨﯿﻢ ﺑﻪ ﻃﻮری ﮐﻪ از روی ‪ k‬ﮐﻮه ﻣﺘﻮاﻟ ﻋﺒﻮر ﮐﻨﺪ‪ .‬ﺑﺮای اﯾﻦ ﮐﺎر‪ ،‬ﺑﺎﯾﺪ ﺑﺎ ﺧﺎکﺑﺮداری ارﺗﻔﺎع ﻫﻤﻪی اﯾﻦ ﮐﻮهﻫﺎ را ﺑﺮاﺑﺮ‬
‫ﮐﻨﯿﻢ‪ .‬اﮔﺮ ارﺗﻔﺎع ﺛﺎﻧﻮﯾﻪی ﮐﻮهﻫﺎ را ‪ d١ , d٢ , . . . , dn‬ﺑﻨﺎﻣﯿﻢ؛ ﻫﺰﯾﻨﻪی ﺳﺎﺧﺖ ﺗﻠﻪﮐﺎﺑﯿﻦ از ﮐﻮه ‪t‬ام ﺗﺎ ﮐﻮه ‪t + k − ١‬ام‪،‬‬
‫ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ‪:‬‬
‫‪h i − di‬‬
‫‪t+k−١‬‬
‫∑‬
‫‪i=t‬‬
‫اﻟ ﻮرﯾﺘﻤ اراﺋﻪ دﻫﯿﺪ ﮐﻪ در )‪ O(n‬ﮐﻤﺘﺮﯾﻦ ﻫﺰﯾﻨﻪی ﺳﺎﺧﺖ ﺗﻠﻪﮐﺎﺑﯿﻦ را ﻣﺸﺨﺺ ﮐﻨﺪ‪.‬‬
‫ب( اﻟ ﻮرﯾﺘﻢ ﺧﻮد را ﺑﺮای ﻗﺴﻤﺖ )اﻟﻒ( ﭘﯿﺎدهﺳﺎزی ﮐﻨﯿﺪ‪.‬‬
‫ورودی‬
‫‪۴‬‬
‫در ﺧﻂ اول ورودی دو ﻋﺪد ‪ N‬و ‪ k‬آﻣﺪهاﻧﺪ‪ .‬در ﺳﻄﺮ ﺑﻌﺪی ‪ N‬ﻋﺪد ﻃﺒﯿﻌ آﻣﺪه اﺳﺖ ﮐﻪ ﻋﺪد ‪i‬ام ﻣﻌﺮف ارﺗﻔﺎع ﮐﻮه‬
‫‪i‬ام ﻣ ﺑﺎﺷﺪ‪.‬‬
‫ﺧﺮوﺟ‬
‫در ﺗﻨﻬﺎ ﺧﻂ ﺧﺮوﺟ ﮐﻤﺘﺮﯾﻦ ﻣﯿﺰان ﻫﺰﯾﻨﻪ ﺑﺮای ﺳﺎﺧﺖ ﺗﻠﻪﮐﺎﺑﯿﻦ را ﺑﻨﻮﯾﺴﯿﺪ‪.‬‬
‫ورودی و ﺧﺮوﺟ ﻧﻤﻮﻧﻪ‪:‬‬
‫‪stdin‬‬
‫‪stdout‬‬
‫‪26‬‬
‫‪4 7‬‬
‫‪14 8 17 2 7 23 1‬‬
‫‪15‬‬
‫‪3 7‬‬
‫‪14 8 17 2 7 23 1‬‬
‫ﻣﺤﺪودﯾﺖﻫﺎ‪:‬‬
‫• ‪١ ≤ k ≤ n ≤ ١٠۶‬‬
‫• ﺗﻤﺎم اﻋﺪاد ورودی در ﺑﺎزه ] ‪ [−١٠٩ , ١٠٩‬ﻫﺴﺘﻨﺪ‪.‬‬
‫‪۵‬‬