PA2.pdf

HASAN ADVENTURE
SECOND ASSIGNMENT
‫ﻣﺴﺌﻮﻟﻴﺖ ﻣﻬﻢ !!‬
‫ﺑﻌﺪ از اﻳﻨﻜﻪ ﺣﺴﻦ از ﭘﺲ رﻧﮓ ﻛﺮدن ﺟﺪول ﻫﺎ ﺑﺮآﻣﺪ ﺑﻪ او ﻟﻘﺐ ﻣﺴﺘﺸﺎر دادﻧﺪ و ﺗﺼﻤﻴﻢ ﮔﺮﻓﺘﻨﺪ او را ﻧﺰد‬
‫ﺧﻮد ﻧﮕﻪ دارﻧﺪ و ﺑﻪ او ﻣﺴﺌﻮﻟﻴﺖ ﻣﻬﻤﺘﺮي ﺑﺪﻫﻨﺪ ‪ ،‬ﺑﻨﺎﺑﺮاﻳﻦ او را ﻣﺴﺌﻮل ﺗﺎﻣﻴﻦ ﺷﻤﻊ ﺟﺸﻦ ﻫﺎي ﺗﻮﻟﺪ‬
‫دﺧﺘﺮ ﭘﺎدﺷﺎه ﻛﺮدﻧﺪ ‪ .‬ﻣﺴﺌﻮﻟﻴﺖ او اﻳﻦ اﺳﺖ ﻛﻪ در ﻫﺮ ﺗﻮﻟﺪ دﺧﺘﺮ ﭘﺎدﺷﺎه ﺑﺎﻳﺪ ﺑﻪ ﺳﻦ او ﺷﻤﻊ ﺑﺮاي روﺷﻦ‬
‫ﻛﺮدن داﺷﺘﻪ ﺑﺎﺷﺪ ‪ .‬در اﻧﺒﺎر ﻗﺼﺮ ﺗﻌﺪادي ﺷﻤﻊ وﺟﻮد دارد ﻛﻪ ﻃﻮﻟﻬﺎي آن ﺑﻪ اﻳﻨﭻ )!!( در ﻳﻚ ﻧﺎﻣﻪ ﺑﻪ‬
‫ﺣﺴﻦ داده ﻣﻴﺸﻮد و ﺣﺴﻦ ﺑﺎﻳﺪ ﺑﮕﻮﻳﺪ ﺑﺎ اﻳﻦ ﺷﻤﻊ ﻫﺎ ﺣﺪاﻛﺜﺮ ﺗﺎ ﭼﻨﺪ ﺳﺎﻟﮕﻲ دﺧﺘﺮ ﭘﺎدﺷﺎه ﻣﻴﺘﻮاﻧﻨﺪ‬
‫ﺟﺸﻦ ﺑﮕﻴﺮﻧﺪ ‪.‬‬
‫در ﻫﺮ ﺗﻮﻟﺪ ﺑﺎﻳﺪ ﺑﻪ ﺳﻦ دﺧﺘﺮ ﭘﺎدﺷﺎه ) ﻛﻪ دﻳﺮوز ﺑﻪ دﻧﻴﺎ آﻣﺪه ( ﺷﻤﻊ ﺑﺮ روي ﻛﻴﻚ ﮔﺬاﺷﺘﻪ ﺷﻮد و در ﻫﺮ‬
‫ﺗﻮﻟﺪ ﻳﻚ اﻳﻨﭻ )!!( از ﻃﻮل ﺷﻤﻊ ﻫﺎﻳﻲ ﻛﻪ روﺷﻦ ﺷﺪه اﺳﺖ ﻛﻢ ﻣﻴﺸﻮد ‪ .‬ﺷﻤﻌﻲ ﻛﻪ ﺗﻤﺎم ﺷﻮد ﻧﻴﺰ دور‬
‫اﻧﺪاﺧﺘﻪ ﻣﻲ ﺷﻮد ‪.‬‬
‫اﻧﺒﺎر دار ﮔﻔﺘﻪ ‪:‬‬
‫‬
‫ﻃﻮل ﻫﺮ ﺷﻤﻊ داﺧﻞ اﻧﺒﺎر ﺣﺪاﻛﺜﺮ ﻣﻤﻜﻦ اﺳﺖ ‪ 100‬اﻳﻨﭻ )!!!!( ﺑﺎﺷﺪ ‪.‬‬
‫‬
‫ﺗﻌﺪاد ﺷﻤﻊ ﻫﺎي داﺧﻞ اﻧﺒﺎر ﻧﻴﺰ ﺣﺪاﻛﺜﺮ ‪ 50‬اﺳﺖ ‪.‬‬
‫ورودي ﻳﻚ رﺷﺘﻪ از اﻋﺪاد اﺳﺖ ﻛﻪ ﻋﺪد ‪i‬ام ﻃﻮل ﺷﻤﻊ ‪i‬ام را ﻧﺸﺎن ﻣﻴﺪﻫﺪ و ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ در ﺧﺮوﺟﻲ ﺑﺎﻳﺪ‬
‫ﻳﻚ ﻋﺪد ﭼﺎپ ﻛﻨﺪ ﻛﻪ ﻫﻤﺎن ﺳﻨﻲ اﺳﺖ ﻛﻪ ﺗﺎ آن ﺳﻦ ﻣﻴﺘﻮان ﺑﺮاي دﺧﺘﺮ ﭘﺎدﺷﺎه ﺟﺸﻦ ﺗﻮﻟﺪ ﮔﺮﻓﺖ ‪.‬‬
: ‫ﻣﺜﺎل ﻫﺎﻳﻲ از ﻛﺎر ﻣﺴﺘﺸﺎر ﻗﺒﻠﻲ‬
Sample Input :
{2, 2, 2}
Sample Output :
3
Sample Input :
{1, 2, 3, 4, 5, 6}
Sample Output :
6
Sample Input :
{2, 2, 2, 4}
Sample Output :
4
‫واروﻧﮕﻲ‬
‫ﻳﻜﻲ از ﻣﺴﺌﻮﻟﻴﺖ ﻫﺎي دﻳﮕﺮ ﺣﺴﻦ اﻳﻦ ﺑﻮد ﻛﻪ اﺳﺒﺎب ﺗﻔﺮﻳﺢ ﭘﺎدﺷﺎه را ﻓﺮاﻫﻢ ﻛﻨﺪ و از ﺗﻔﺮﻳﺤﺎت ﭘﺎدﺷﺎه اﻳﻦ‬
‫ﺑﻮد ﻛﻪ ﺑﻪ ﻣﺴﺘﺸﺎر ﺧﻮد ﻳﻚ ﺟﺎﻳﮕﺸﺖ از اﻋﺪاد ‪ 1‬ﺗﺎ ‪ n‬ﺑﺪﻫﺪ و از او ﺑﺨﻮاﻫﺪ در ﻋﺮض ﭼﻨﺪ ﺛﺎﻧﻴﻪ ﺗﻌﺪاد‬
‫واروﻧﮕﻲ ﻫﺎي آن را ﺣﺴﺎب ﻛﻨﺪ ‪ .‬واروﻧﮕﻲ در ﻳﻚ ﺟﺎﻳﮕﺸﺖ ﻳﻌﻨﻲ ﻳﻚ زوج ﻣﺮﺗﺐ )‪ (i,j‬ﺑﻪ ﻃﻮري ﻛﻪ ‪:‬‬
‫] ‪i < j & a[i ] > a[ j‬‬
‫ﻣﺜﻼ ﺗﻌﺪاد واروﻧﮕﻲ ﺟﺎﻳﮕﺸﺖ ‪ 1،2،3‬ﺑﺮاﺑﺮ ‪ 0‬اﺳﺖ و ﺗﻌﺪاد واروﻧﮕﻲ ‪ 2،1،3‬ﺑﺮاﺑﺮ ‪ 1‬اﺳﺖ ‪ ،‬ﺟﻔﺖ واروﻧﻪ آن‬
‫) ‪ (1،2‬اﺳﺖ ‪ .‬ﺗﻌﺪاد واروﻧﮕﻲ ﺟﺎﻳﮕﺸﺖ ‪ 3،1،2‬ﺑﺮاﺑﺮ ‪ 2‬اﺳﺖ ‪ ،‬ﺟﻔﺖ ﻫﺎي واروﻧﻪ آن ) ‪ (1،2‬و ) ‪(1،3‬‬
‫اﺳﺖ‪.‬‬
‫ﺣﺴﻦ در ورودي در ﺧﻂ اول ﺑﻪ ﺷﻤﺎ ﻃﻮل ﺟﺎﻳﮕﺸﺖ ) ‪ ( n‬و در ﺧﻂ دوم ‪ ،‬ﺟﺎﻳﮕﺸﺖ را ﻣﻴﺪﻫﺪ و در‬
‫ﺧﺮوﺟﻲ از ﺷﻤﺎ ﺗﻌﺪاد واروﻧﮕﻲ را ﻣﻴﺨﻮاﻫﺪ ‪.‬‬
‫ﻫﻤﭽﻨﻴﻦ ﺣﺴﻦ از دﺳﺘﻴﺎر آﺷﭙﺰ ﺷﻨﻴﺪه اﺳﺖ ‪:‬‬
‫‬
‫ﻃﻮل ﺟﺎﻳﺸﮕﺖ از ‪ 1000000‬ﺑﻴﺸﺘﺮ ﻧﻴﺴﺖ ‪.‬‬
‫‪Sample Output :‬‬
‫‪5‬‬
‫‪Sample Input :‬‬
‫‪5‬‬
‫‪51324‬‬
‫ﺑﺎزي ﻣﺮﺗﺐ ﺳﺎزي‬
‫ﺣﺴﻦ ﻣﺪت زﻳﺎدي در ﺧﺪﻣﺖ ﭘﺎدﺷﺎه ﺑﻮد و ﺧﺪﻣﺎت زﻳﺎدي ﻛﺮد ﺗﺎ اﻳﻨﻜﻪ دﻟﺶ ﻳﺎد دﻳﺎر ﻛﺮد و از‬
‫ﭘﺎدﺷﺎه ﺧﻮاﺳﺖ ﻛﻪ او را ﺑﻪ ﻣﺮﺧﺺ ﻛﻨﺪ ‪ ،‬از آﻧﺠﺎﻳﻲ ﻛﻪ ﭘﺎدﺷﺎه ﻧﻴﺰ از او ﺧﺴﺘﻪ ﺷﺪه ﺑﻮد ﺑﻪ او ﻗﻮل‬
‫داد ﻛﻪ اﮔﺮ ﺑﺘﻮاﻧﺪ در ﺑﺎزي ﻣﺮﺗﺐ ﺳﺎزي ﺑﺮﻧﺪه ﺷﻮد او را ﻣﺮﺧﺺ ﻣﻴﻜﻨﺪ ‪.‬‬
‫در ﺑﺎزي ﻣﺮﺗﺐ ﺳﺎزي ﺑﻪ ﺷﻤﺎ ﻳﻚ ﺟﺎﻳﮕﺸﺖ از اﻋﺪاد ‪ 1‬ﺗﺎ ‪ n‬و ﻋﺪد ‪ k‬داده ﻣﻲ ﺷﻮد ‪ .‬در ﻫﺮ ﺣﺮﻛﺖ‬
‫ﺷﻤﺎ ﻣﻲ ﺗﻮاﻧﻴﺪ ‪ k‬ﻋﻨﺼﺮ ﭘﺸﺖ ﺳﺮ ﻫﻢ را اﻧﺘﺨﺎب ﻛﻨﻴﺪ و ﺗﺮﺗﻴﺐ ﻋﻨﺎﺻﺮ آن را ﺑﺮﻋﻜﺲ ﻛﻨﻴﺪ ‪ .‬ﻫﺪف‬
‫ﺑﺎزي اﻳﻦ اﺳﺖ ﻛﻪ اﻳﻦ ﻋﻨﺎﺻﺮ را ﺑﻪ ﺻﻮرت ﺻﻌﻮدي ﻣﺮﺗﺐ ﻛﻨﻴﺪ ‪ ،‬ﻣﻨﺘﻬﻲ ﺣﺴﻦ ﺑﺎﻳﺪ ﺣﺪاﻗﻞ ﺗﻌﺪاد‬
‫ﺣﺮﻛﺖ ﻻزم ﺑﺮاي اﻳﻨﻜﻪ ﻳﻚ ﺟﺎﻳﮕﺸﺖ را ﻣﺮﺗﺐ ﻛﻨﻴﻢ را ﺑﮕﻮﻳﺪ ﻧﻪ ﺣﺮﻛﺖ ﻫﺎ را ‪.‬‬
‫ﻛﻤﺘﺮﻳﻦ ﺗﻌﺪاد ﺣﺮﻛﺖ ﻫﺎ ﺑﺮاي ﭘﺎﻳﺎن ﺑﺎزي را ﺑﺪﺳﺖ آورﻳﺪ و اﮔﺮ اﻣﻜﺎن ﻧﺪاﺷﺖ ‪ -1‬ﺑﺮﮔﺮداﻧﻴﺪ ‪.‬‬
‫در ﺧﻂ اول ورودي ﭘﺎدﺷﺎه ﺑﻪ ﺣﺴﻦ ‪ ، n‬در ﺧﻂ دوم ﺟﺎﻳﮕﺸﺘﻲ ﻛﻪ ﺑﺎﻳﺪ ﻣﺮﺗﺐ ﺷﻮد و در ﺧﻂ ﺳﻮم ‪k‬‬
‫را ﻣﻴﺪﻫﺪ ‪ .‬ﺣﺴﻦ ﻧﻴﺰ در ﺧﺮوﺟﻲ ﺑﺎﻳﺪ ﻛﻤﺘﺮﻳﻦ ﺗﻌﺪاد ﺣﺮﻛﺖ ﺑﺮاي ﭘﺎﻳﺎن ﺑﺎزي و اﮔﺮ اﻣﻜﺎن ﻧﺪاﺷﺖ‬
‫‪ -1‬ﺑﺮﮔﺮداﻧﺪ ‪.‬‬
‫ﻗﻮاﻧﻴﻦ ﻧﺎﻧﻮﺷﺘﻪ ‪:‬‬
‫‬
‫‬
‫ﻃﻮل آراﻳﻪ ﺑﻴﻦ ‪ 2‬ﺗﺎ ‪ 9‬اﺳﺖ ‪.‬‬
‫ﻫﺮ ﻋﻨﺼﺮ آراﻳﻪ ﺑﻴﻦ ‪ 1‬ﺗﺎ ﻃﻮل آراﻳﻪ اﺳﺖ ‪.‬‬
‫اﻣﺪاد ﻏﻴﺒﻲ ‪:‬‬
‫ﺑﺮاي ﻫﺮ ﺟﺎﻳﮕﺸﺖ ﻳﻚ ﮔﺮه در ﮔﺮاف در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ و ﻫﺮ دو ﺣﺎﻟﺖ ﻛﻪ ﺑﻪ ﻫﻢ ﺑﺎ ﻳﻚ ﺣﺮﻛﺖ ﻗﺎﺑﻞ‬
‫ﺗﺒﺪﻳﻞ ﻫﺴﺘﻨﺪ را ﺑﺎ ﻳﻚ ﻳﺎل ﺑﻪ ﻫﻢ وﺻﻞ ﻛﻨﻴﺪ ﺳﭙﺲ ﻛﻮﺗﺎﻫﺘﺮﻳﻦ ﻣﺴﻴﺮ از ﺣﺎﻟﺖ اوﻟﻴﻪ ﺑﻪ ﺣﺎﻟﺖ‬
‫ﻣﺮﺗﺐ ﺷﺪه را ﺑﻴﺎﺑﻴﺪ‪.‬‬
‫‪Sample Output :‬‬
‫‪2‬‬
‫ﺗﻮﺿﻴﺢ ﻣﺜﺎل ‪ :‬اﺑﺘﺪا ﺳﻪ ﻋﻨﺼﺮ آﺧﺮ را ﺑﺮﻋﻜﺲ ﻛﺮده ﺳﭙﺲ ﺳﻪ ﻋﻨﺼﺮ اول ‪.‬‬
‫‪Sample Input :‬‬
‫‪4‬‬
‫‪3412‬‬
‫‪3‬‬