【Codeforces Round 354 (Div 2)A】【水题 贪心】Nicholas and Permutation 恰好交换一次的pos[n]-pos[1]

原创 2016年05月27日 13:18:52

A. Nicholas and Permutation
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Nicholas has an array a that contains n distinct integers from 1 to n. In other words, Nicholas has a permutation of size n.

Nicholas want the minimum element (integer 1) and the maximum element (integer n) to be as far as possible from each other. He wants to perform exactly one swap in order to maximize the distance between the minimum and the maximum elements. The distance between two elements is considered to be equal to the absolute difference between their positions.

Input

The first line of the input contains a single integer n (2 ≤ n ≤ 100) — the size of the permutation.

The second line of the input contains n distinct integers a1, a2, ..., an (1 ≤ ai ≤ n), where ai is equal to the element at the i-th position.

Output

Print a single integer — the maximum possible distance between the minimum and the maximum elements Nicholas can achieve by performing exactly one swap.

Examples
input
5
4 5 1 3 2
output
3
input
7
1 6 5 3 4 7 2
output
6
input
6
6 5 4 3 2 1
output
5
Note

In the first sample, one may obtain the optimal answer by swapping elements 1 and 2.

In the second sample, the minimum and the maximum elements will be located in the opposite ends of the array if we swap 7 and 2.

In the third sample, the distance between the minimum and the maximum elements is already maximum possible, so we just perform some unnecessary swap, for example, one can swap 5 and 2.


#include<stdio.h>
#include<iostream>
#include<string.h>
#include<string>
#include<ctype.h>
#include<math.h>
#include<set>
#include<map>
#include<vector>
#include<queue>
#include<bitset>
#include<algorithm>
#include<time.h>
using namespace std;
void fre() { freopen("c://test//input.in", "r", stdin); freopen("c://test//output.out", "w", stdout); }
#define MS(x,y) memset(x,y,sizeof(x))
#define MC(x,y) memcpy(x,y,sizeof(x))
#define MP(x,y) make_pair(x,y)
#define ls o<<1
#define rs o<<1|1
typedef long long LL;
typedef unsigned long long UL;
typedef unsigned int UI;
template <class T1, class T2>inline void gmax(T1 &a, T2 b) { if (b>a)a = b; }
template <class T1, class T2>inline void gmin(T1 &a, T2 b) { if (b<a)a = b; }
const int N = 105, M = 0, Z = 1e9 + 7, ms63 = 0x3f3f3f3f;
int n;
int a[N], p[N];
int main()
{
	while (~scanf("%d", &n))
	{
		for (int i = 1; i <= n; ++i)scanf("%d", &a[i]), p[a[i]] = i;
		int ans = abs(p[n] - p[1]);
		gmax(ans, p[n] - 1);
		gmax(ans, p[1] - 1);
		gmax(ans, n - p[n]);
		gmax(ans, n - p[1]);
		printf("%d\n", ans);
	}
	return 0;
}
/*
【题意】
给你一个全排列,恰好交换一次,问maxabsdis(pos[n]-pos[1])

【类型】
贪心

【分析】
直接贪心,
我们肯定交换的位置是与1和n有关的,
然后肯定交换到位置1或n
于是暴力枚举一下5(其实是4)种情况即可

*/


版权声明:题解中哪里写错请一定要指出来QwQ 转载还请注明下出处哦,谢谢^_^

DP动态规划(持续更新)

最长不下降子序列 不用我说了吧 有一个O(nlogn)的做法 最长公共子序列 smartoj1212 #include using namespace std; char a[300...
  • pcccccccccc
  • pcccccccccc
  • 2017年07月26日 09:07
  • 107

CF 482A(Diverse Permutation-相邻距离不同数为k的1~n全排列构造)

A. Diverse Permutation time limit per test 1 second memory limit per test 256 megabytes ...
  • nike0good
  • nike0good
  • 2014年10月31日 11:42
  • 1865

python练习题(一)

first week 字符串拼接 用户输入两个字符串,将它们组合后输出 str1 = input("Wanghui") str2 = input("Los Angeles") print("世界这么...
  • wh211212
  • wh211212
  • 2017年03月14日 19:52
  • 1035

斯坦福机器学习实验之2-逻辑回归(Logistic Regression)

1.逻辑回归目标:利用逻辑回归预测学生是否被录取。 数据集:一群学生的两次考试成绩作为输入和是否被录取作为输出。1.1数据可视化(Visualizing the the data) 函数:find...
  • u010837794
  • u010837794
  • 2017年05月16日 09:37
  • 457

简单的string类的模拟实现

综述:c++标准库提供了一个字符串类型string ,该类型可以直接定义一个字符串对象,并且对字符串进行各种操作;以下是本人根据c++标准库中的string类,简单的模拟实现该类; ...
  • gogogo_sky
  • gogogo_sky
  • 2017年05月25日 13:18
  • 199

pos机上的串口配置

1.打开并初始化串口 int openRs232(int uibuad) { struct Opn_Blk com_parm; int format; int iTermType; ...
  • nocodelife
  • nocodelife
  • 2013年02月22日 11:25
  • 4348

串(String)--基本概念

概念 串(string)是由零个或多个字符组成的有限序列,又叫字符串。串中的字符数目n成为串的长度。零个字符的串成为空串。串的逻辑结构和线性表很相似,不同之处在于串针对的是字符集,串的每个元素都是...
  • dengpei187
  • dengpei187
  • 2016年07月11日 19:31
  • 421

C++面试题(七)

在C++中,排序也是一个很重要的东西,下面就对常见的排序算法进行一个总结 1.交换函数void swap(int *a, int i, int j) //交换两个数 { ...
  • zcl1804742527
  • zcl1804742527
  • 2017年02月18日 16:38
  • 162

android 控制POS机图文打印(二)

上一篇文章结束了ESC/POS的指令集,没看过的可以去看一下,可以当作工具文档来使用的 android 控制POS机图文打印(一) 这一篇正式介绍如何使用POS机来打印图文信息。 首先介绍一...
  • qianqianyihao
  • qianqianyihao
  • 2014年11月29日 11:34
  • 4086

运营商Pos接口连接IP网与SDH网络

POS(packet over sonet)就是为了在传统SDH/SONET网络上传输IP分组。由于历史上电信的传输基本上都是基于SDH的,无法直接传输IP分组,所以需要使用PoS端口与IP分组网络互...
  • jiayanhui2877
  • jiayanhui2877
  • 2013年10月28日 14:11
  • 1480
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Codeforces Round 354 (Div 2)A】【水题 贪心】Nicholas and Permutation 恰好交换一次的pos[n]-pos[1]
举报原因:
原因补充:

(最多只允许输入30个字)