CF676A Nicholas and Permutation 题解

CF676A Nicholas and Permutation

题目链接:CF676A Nicholas and Permutation

题意:给定数组,可以让两个数的位置交换,让最大值和最小值的位置的差的绝对值最大

先用 c c c记录最大值位置, d d d记录最小值位置

然后取 4 4 4种情况中绝对值最大的

1 1 1种, d d d与第 1 1 1个元素交换

2 2 2种, d d d与第 n n n个元素交换

3 3 3种, c c c与第 1 1 1个元素交换

4 4 4种, c c c与第 n n 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;
}

转载请说明出处

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值