1. 程式人生 > 其它 >題解 CF676A 【Nicholas and Permutation】

題解 CF676A 【Nicholas and Permutation】

技術標籤: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; }

轉載請說明出處