首页 > 代码库 > codeforces——Little Pony and Sort by Shift
codeforces——Little Pony and Sort by Shift
1 /* 2 题目大意:给你一个序列,不断地将最后边的数值移动到最前边,问最少经过多少次可以变成一个单调递增的序列! 3 如果不能则输出-1。 4 如果该序列按照不断从后向前移动排序成功,那么该序列要么只有一个单调递增的序列, 5 或者有两段单调递增的序列(1..k 和 k+1..n)并且 (k+1...n)中的最大值num[n]<=(1...k)中的最小值num[1] 6 */ 7 #include<iostream> 8 #include<cstdio> 9 using namespace std;10 int a[100005];11 int main(){12 int n;13 while(scanf("%d", &n)!=EOF){14 int cnt=0;15 int cur=0, nt, place=0;16 for(int i=1; i<=n; ++i){17 scanf("%d", &nt);18 a[i]=nt;19 if(nt<cur){20 ++cnt;21 place = i;22 }23 cur=nt;24 }25 if(cnt==0)26 printf("0\n"); 27 else if(cnt>1)28 printf("-1\n");29 else{30 if(a[n] > a[1])31 printf("-1\n");32 else printf("%d\n", n-place+1);33 }34 }35 return 0;36 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。