AtCoder Regular Contest 132 Shift and Reverse(思维)

题目链接
AtCoder Regular Contest 132 Shift and Reverse(思维)_第1张图片
题目保证了给定输出一定有解,所以序列一定是从1—n 按操作1变换来的或者说从n—1按操作1变换来的,然后计算一下还原步数就可以。


signed main()
{
    int n;
    read(n);
    int a[n+5],pos[n+5];
    for(int i=1;i<=n;i++){
        read(a[i]);
        pos[a[i]]=i;
    }
    int ans;
    if(pos[1]<pos[n]){
        if(pos[1]+1==pos[n]){
            ans=min(pos[1]+1,n-pos[1]+1);
        }
        else ans=0;
    }
    else{
        if(pos[1]-1==pos[n]){
            ans=min(pos[n],n-pos[n]+2);
        }
        else ans=1;
    }
    printf("%lld\n",ans);
}

你可能感兴趣的:(推荐算法)