https://ac.nowcoder.com/acm/problem/15051 链接:https://ac.nowcoder.com/acm/problem/15051 来源:牛客网

题号:NC15051

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 32768K,其他语言65536K

64bit IO Format: %lld

题目描述

给你一个1 -> n的排列,现在有一次机会可以交换两个数的位置,求交换后最小值和最大值之间的最大距离是多少?

输入描述:

第一行一个数n

之后一行n个数表示这个排列

输出描述:

输出一行一个数表示答案

示例1

输入

5 4 5 1 3 2

输出

3 说明

把1和2交换后 序列为4 5 2 3 1

最大值5在数组的2位置,最小值1在数组的5位置 距离为3

备注: 对于100%的数据,1 <= n <= 100

#include<bits/stdc++.h>

using namespace std;

int main()

{

int n,a,b,u;
cin>>n;
for(int i=1;i<=n;i++)
{
    cin>>u;
    if(u==1)
        a=i;
    if(u==n)
        b=i;
}
if(a>b)
{
    u=a;
    a=b;
    b=u;
}
cout<<max(n-a,b-1);
return 0;

}