CF676A Nicholas and Permutation 题解
题目链接:CF676A Nicholas and Permutation
题意:给定数组,可以让两个数的位置交换,让最大值和最小值的位置的差的绝对值最大
先用$c$记录最大值位置,$d$记录最小值位置
然后取$4$种情况中绝对值最大的
第$1$种,$d$与第$1$个元素交换
第$2$种,$d$与第$n$个元素交换
第$3$种,$c$与第$1$个元素交换
第$4$种,$c$与第$n$个元素交换
代码实现还是比较简单的
#include<bits/stdc++.h>
using namespace std;
#define R register
int n,k,a=-1,b=INT_MAX,c,d;//最大值初始化为-1,最小值初始化为很大的数(2147483647)
signed main()
{
scanf("%d",&n);
for(R int i=0; i<n; i++)
{
scanf("%d",&k);//无需数组存
if(k>a)a=k,c=i;
if(k<b)b=k,d=i;
}
printf
(
"%d\n",
max
(
max(d,abs(d-(n-1))),
max(c,abs(c-(n-1)))
)
);//此处是为了方便阅读
return 0;
}