本题较为简单,因为只有一段子序列被倒序了,故只需要确定子序列的头和尾就完全决定了子序列,而在整段序列中,余子序列满足递增,子序列内部满足递减,尾部与正常序列不满足递减,根据以上规律,先通过递增筛查,首个不满足递增的位置就是子序列的头部,然后按照递减筛查,首个不满足递减的就是子序列的尾部,由此本题就被解决了。
代码如下:
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n];
int i;
for(i=0;i<=n-1;i++){
cin>>a[i];
}
int over,start;
for(i=0;i<n-1;i++){
if(a[i]>a[i+1]){
over=i;
break;
}
}
if(i==n-1)cout<<0<<' '<<0;
else{
for(i=over;i<n;i++){
if(a[i]<a[i+1]){
start=i;
break;
}
}
cout<<a[start]<<' '<<a[over];
}
return 0;
}