首页 > 代码库 > Sort the Array
Sort the Array
1 /* 2 思路: 3 找到单调下降串的起始位置[l, r] 4 如果左边 0...l-1中的最大值 > l...r中的最小值 或者 5 r+1...n中的最小值 < l...r中的最大值 都是不能实现排序的! 6 */ 7 #include<iostream> 8 #include<cstdio> 9 #include<algorithm>10 using namespace std;11 typedef long long LL;12 int cur, nt;13 int cnt;14 int num[100005];15 int main(){16 int i, n;17 int begin, end;18 int flag;19 int min1, max2;20 while(scanf("%d", &n)!=EOF){21 cnt=cur=0;22 flag=0;23 for(i=1; i<=n; ++i){24 scanf("%d", &nt);25 num[i]=nt;26 if(nt>cur)27 flag=0;28 if(!flag && nt<cur){29 ++cnt;30 flag=1;31 begin=i-1;32 end=i;33 }34 if(flag && nt<cur)35 end=i;36 cur=nt;37 }38 if(cnt==1){39 min1=0x3f3f3f3f;40 if(end!=n)41 min1=num[end+1];42 max2=-0x3f3f3f3f;43 if(begin!=1)44 max2=num[begin-1];45 if(max2>num[end] || min1<num[begin]) 46 printf("no\n");47 else48 printf("yes\n%d %d\n", begin, end);49 }50 else if(cnt==0)51 printf("yes\n1 1\n");52 else printf("no\n");53 }54 return 0;55 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。