Codeforces Round #354 (Div. 2) A
http://codeforces.com/contest/676/problem/A
题意:有一个大小为1到n的n个数的序列,通过一次交换,把1和n位置尽量变远。
思路:这里我们可以把1和n看做是同等地位的,只需要看1和n那个离边界比较近,就把它移动到边界即可。
#include <stdio.h> #include <algorithm> #include <math.h> #include <iostream> using namespace std; #define maxn 100005 int a[maxn]; int main() { int n; int max1=0; int minn=0; while(~scanf("%d",&n)) { for(int i=1;i<=n;i++) { scanf("%d",&a[i]); if(a[i]==1) minn=i; if(a[i]==n) max1=i; } if(minn>max1) swap(minn,max1); int ans=max(max1-1,n-minn); printf("%d\n",ans); } return 0; }