九度 1398:移动次数

http://ac.jobdu.com/problem.php?id=1398 注意可能有多个最大最小值,找出最左的最小值和最右的最大值即可,用cout超时

View Code
 1 #include<iostream>
2 #include<climits>
3 #include<cstdio>
4 using namespace std;
5 int a[208];
6 int main()
7 {
8 int n;
9 while(scanf("%d",&n)==1)
10 {
11 int i;
12 for(i=0;i<n;i++) scanf("%d",&a[i]);
13 int minx=300,maxx=0,minpos,maxpos;
14 for(i=0;i<n;i++)
15 {
16 if(a[i]<minx) minx=a[i],minpos=i;
17 if(a[i]>=maxx) maxx=a[i],maxpos=i;//可能有多个最大值和最小值
18 }
19 //cout<<minpos<<" "<<maxpos<<endl;
20 if(minpos<maxpos)
21 {
22 printf("%d\n",minpos+n-maxpos-1);
23 }
24 else
25 {
26 printf("%d\n",minpos+n-maxpos-2);
27 }
28 }
29 return 0;
30 }


 

posted @ 2012-03-30 09:30  keepmoving89  阅读(145)  评论(0编辑  收藏  举报