فهرست مندرجات

سوال ۱

آقای مهندس قلکش را شکسته و با پول داخل آن یک جزیره خریده است. اما ظاهرا جزیره‌ را به او قالب کرده‌اند و جزیره‌ای که خریده هیچ زمین صافی ندارد و بیشتر به کوهستان شبیه است. سطح جزیره‌ی آقای مهندس را می‌توان به صورت یک خط شکسته در صفحه‌ی مختصات نشان داد. در واقع اگر ارتفاع نقطه‌های جزیره را $a_1, a_2, \cdots , a_n$ در نظر بگیریم، جزیره را می‌توان به صورت یک خط شکسته متشکل از نقاط $(0, 0), (1, a_1), (2, a_2), . . . , (n, a_n), (n + 1, 0)$ نمایش داد به طوری که نقاط متوالی با یک پاره‌خط راست به یک‌دیگر متصل‌اند.

هم‌چنین به خاطر جزر و مد دریا، سطح آب در طول زمان متفاوت است و با بالا آمدن سطح دریا سطح جزیره به چند قسمت تقسیم می‌شود.

توجه داشته باشید که یک نقطه از جزیره که دقیقا هم‌سطح آب است زیر سطح آب حساب می‌شود. یعنی اگر نوک قله‌ای هم‌سطح آب باشد، نوک قله یک قسمت جزیره حساب نمی‌شود و هم‌چنین اگر انتهای دره‌ای هم‌سطح آب باشد، دو طرف انتهای دره دو قسمت متفاوت حساب می‌شوند. برای مثال در شکل زیر جزیره سه قسمت دارد.

حال برنامه‌ای بنویسید که با گرفتن اطلاعات مربوط به جزیره، به درخواست‌های زیر پاسخ دهد:

ورودی

خروجی

خروجی شامل $q$ سطر است که در سطر $i$ام آن پاسخ به $i$امین درخواست نوشته شده‌است.

زیرمسئله‌ها

محدودیت‌ها

ورودی و خروجی نمونه

ورودی نمونه خروجی نمونه
7
8 6 7 3 4 2 5
14
! 4 1
! 4 3
~ 4
~ 3
~ 2
~ 1
? 3
? 2
? 1
! 5 9
! 7 10
? 4
? 3
? 2
3
3
2
3
2
1
3
2
0
3
4
6
3
2

توضیحات

ورودی نمونه اول مانند تصویر زیر است.