标签:style blog color os io for ar div
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 else 48 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 }
标签:style blog color os io for ar div
原文地址:http://www.cnblogs.com/hujunzheng/p/3885952.html