題解 CF676A 【Nicholas and Permutation】
阿新 • • 發佈:2021-02-13
技術標籤:c++
先用 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;
}
轉載請說明出處