لینکهای مفید برای شرکت در مسابقه:
راهحلها و راهنماییهای نهایی اضافه شدند.
این راهنماییها را میتوانید در انتهای سوالات مشاهده کنید.
.
میتوانید سوالات خود را از قسمت "سوال بپرسید" مطرح کنید.
بابای حسنی به حسنی سوالی را داده و به او گفته تا این سوال را حل کند. اما چون حسنی زیاد علاقهای به حل سوال ندارد، از شما خواسته تا این سوال را برای او حل کنید.
آرایهای به نام به طول داریم. میخواهیم بلندترین زیردنبالهای از آرایه را پیدا کنیم که صعودی-نزولی باشد.
حسنی به دنباله صعودی-نزولی میگوید اگر سه شرط زیر برای آن برقرار باشد:
حال شما باید طول بلندترین زیردنبالهای از آرایه که صعودی-نزولی است را پیدا کنید و آن را چاپ کنید.
نکته: به آرایه یک زیردنباله از آرایه میگوییم اگر بتوان با حذف تعدادی عضو از آرایه به آرایه رسید.
در اولین خط ورودی عدد و در خط بعدی عدد امده است که عدد ام مقدار خانه ام آرایه است.
در تنها خط خروجی طول بلندترین زیردنباله صعودی-نزولی را بگویید.
برای مثال دنباله یکی از جوابهای ممکن است.
در این حالت کل آرایه صعودی-نزولی است.
اگر دو عنصر متوالی و مساوی وجود داشت، میتوانیم یکی را به دلخواه حذف کنیم چون در جواب مسئله تاثیری ندارد.
اگر سه عنصر متوالی وجود داشته باشد که صعودی باشند یعنی اولی کمتر از دومی و دومی کمتر از سومی باشد میتوانیم عنصر دوم را حذف کنیم. (چرا؟)
اگر دنبال بهینهای وجود داشته باشد که عنصر وسط (یعنی دوم) در این دنباله باشد طبق تعریف دنباله صعودی-نزولی، ممکن نیست هر سه عنصر در این دنباله باشند. پس میتوان جای عنصر دوم یکی از دو عنصر که استفاده نشده را قرار داد. (در صورتی که این عنصر، اندیس فرد داشت جای آن عنصر بعدی که بزرگتر است (و در نتیجه بهتر است) را قرار میدهیم و در غیر این صورت عنصر دیگر)
اگر k عنصر متوالی صعودی وجود داشت طبق راهنمایی قبل فقط اولی و اخری را نگه میداریم و بقیه را حذف میکنیم.
همینطوری اگر k عنصر متوالی نزولی وجود داشت اولی و اخری را نگه میداریم و بقیه را حذف میکنیم.
بعد از حذف عنصرهای اضافه که در راهنمایی ۲ گفته شد، میتوانید مشاهده کنید که دنباله باقیمانده، یک دنباله صعودی-نزولی است. البته ممکن است نیاز باشد اولین عنصر را نیز حذف کنید در صورتی که عنصر اولی بزرگتر از عنصر بعدی باشد.
دنباله جدید صعودی - نزولی است چون عضو دوم بزرگتر از عضو اول است و اگر عنصر سوم بزرگتر از دومی باشد سه عنصر متوالی صعودی پیدا شده که تناقض دارد. پس عنصر سوم کوچکتر از عنصر دومی است. حالا اگر عنصر چهارم کوچکتر از عنصر سوم باشد دوباره سه عنصر متوالی نزولی پیدا شده که تناقض دارد پس عنصر چهارم بزرگتر از عنصر سوم است.
اگر همین روال را ادامه بدهیم میبینیم که دنباله صعودی-نزولی است.
از طرفی این دنباله بلندترین است چون دنبال بهینهای وجود داشته باشد که عنصر وسط (یعنی دوم) در این دنباله باشد طبق تعریف دنباله صعودی-نزولی ممکن نیست هر سه عنصر در این دنباله باشند پس میتوان جای عنصر دوم یکی از دو عنصر که استفاده نشده را قرار داد (در صورتی که این عنصر، اندیس فرد داشت جای آن عنصر بعدی که بزرگتر است (و در نتیجه بهتر است) را قرار میدهیم و در غیر این صورت عنصر دیگر)