题意:
输入个无序无重复数组,选中一个数后可以和其后比他小的一串数换位置,求要换几次。
题解:
用s[i]储存数组,倒序遍历,
在遇到1之前,所有相隔的距离都是要换的数。
#include<cstdio>
using namespace std;
const int N=1000000+5;
int s[N];
int main()
{
int M,n,cnt=0;
scanf("%d",&M);
while(M--){
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&s[i]);
int m=n,ans=0;
for(int i=n;i>0;){
if(s[i]==m){m--;i--;}
else if(s[i]<m){ans+=m-s[i];m=s[i];}
else i--;
if(m==1)break;
}
printf("Case #%d: %d\n",++cnt,ans);
}
}