码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Round #354 (Div. 2) A

时间:2016-05-26 14:28:32      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

题目给出1~n的n个数的一个permutation,swap一次任意两个数,output 1 and n 之间的最大距离

记录1 and n的位置p,确定1的位置,移动n到位置1 and n,确定n的位置,移动1到位置1 and n,output max value.

O(n).

#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;

int n;
struct node{
    int num;
    int p;
};
node a[100+10];

int main(){
    while(scanf("%d",&n)==1){
        int b,d;
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i].num);
            a[i].p = i;

            if(a[i].num == 1){
                b = a[i].p;
            }
            if(a[i].num == n){
                d = a[i].p;
            }
        }
        int maxn = -1;
        maxn  = max(max(abs(d-1),abs(d-n)),max(abs(b-n),abs(b-1)));
        printf("%d\n",maxn);
    }
    return 0;
}

 

Codeforces Round #354 (Div. 2) A

标签:

原文地址:http://www.cnblogs.com/Lxyan/p/5530874.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!