Sort the Array

题意翻译

``` 作为一个程序员,你炒鸡喜欢数组,于是你的朋友就在你的生日当天送给你一个长度为n的整数数组a。 不幸的是,这个数组似乎有点小,你想要一个更大的数组。你的朋友答应你,如果你可以回答如下问题,他们就送给你一个更大的数组:是否可以通过翻转这个数组中的一段,使这个数组变成一个上升数组? 输入的第一行是一个整数n,表示数组长为n; 第二行是n个范围在[1,1e9]内的整数,表示a1,a2,a3……an。 输出的第一行是“yes”或“no”(不带引号); 如果你给出的答案是“yes”,你还要输出两个用空格隔开的整数l,r,表示只需翻转以l,r为端点的子段就可使数组满足要求。 如果方案有多种,只需输出任意一种即可。 ``` @kkksc3 @[chenzhe](/space/show?uid=30233)

题目描述

Being a programmer, you like arrays a lot. For your birthday, your friends have given you an array $ a $ consisting of $ n $ distinct integers. Unfortunately, the size of $ a $ is too small. You want a bigger array! Your friends agree to give you a bigger array, but only if you are able to answer the following question correctly: is it possible to sort the array $ a $ (in increasing order) by reversing exactly one segment of $ a $ ? See definitions of segment and reversing in the notes.

输入输出格式

输入格式


The first line of the input contains an integer $ n $ ( $ 1<=n<=10^{5} $ ) — the size of array $ a $ . The second line contains $ n $ distinct space-separated integers: $ a[1],a[2],...,a[n] $ ( $ 1<=a[i]<=10^{9} $ ).

输出格式


Print "yes" or "no" (without quotes), depending on the answer. If your answer is "yes", then also print two space-separated integers denoting start and end (start must not be greater than end) indices of the segment to be reversed. If there are multiple ways of selecting these indices, print any of them.

输入输出样例

输入样例 #1

3
3 2 1

输出样例 #1

yes
1 3

输入样例 #2

4
2 1 3 4

输出样例 #2

yes
1 2

输入样例 #3

4
3 1 2 4

输出样例 #3

no

输入样例 #4

2
1 2

输出样例 #4

yes
1 1

说明

Sample 1. You can reverse the entire array to get $ [1,2,3] $ , which is sorted. Sample 3. No segment can be reversed such that the array will be sorted. Definitions A segment $ [l,r] $ of array $ a $ is the sequence $ a[l],a[l+1],...,a[r] $ . If you have an array $ a $ of size $ n $ and you reverse its segment $ [l,r] $ , the array will become: $ a[1],a[2],...,a[l-2],a[l-1],a[r],a[r-1],...,a[l+1],a[l],a[r+1],a[r+2],...,a[n-1],a[n]. $