CodeForces - 676A
2017-03-05 15:39
281 查看
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.
Example
Input
Output
Input
Output
Input
Output
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.
//
// Created by liyuanshuo on 17-3-5.
//
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int a[110];
int Distance( int n )
{
int x1, x2;
for (int i = 0 ; i < n ; ++i)
{
if( a[i] == 1 )
x1 = i;
if( a[i] == n )
x2 = i;
}
return abs(x2 - x1);
}
int main7( )
{
//freopen("/home/liyuanshuo//ClionProject/C4Practice1/in.in", "r", stdin);
int n, ans = 0;
cin>>n;
for (int i = 0 ; i < n ; ++i)
{
cin>>a[i];
}
for (int j = 0 ; j < n ; ++j)
{
for (int i = j+1 ; i < n ; ++i)
{
swap( a[i], a[j] );
ans = max( ans, Distance(n));
swap( a[i], a[j]);
}
}
cout<<ans<<endl;
return 0;
}
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.
Example
Input
5 4 5 1 3 2
Output
3
Input
7 1 6 5 3 4 7 2
Output
6
Input
66 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.
//
// Created by liyuanshuo on 17-3-5.
//
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int a[110];
int Distance( int n )
{
int x1, x2;
for (int i = 0 ; i < n ; ++i)
{
if( a[i] == 1 )
x1 = i;
if( a[i] == n )
x2 = i;
}
return abs(x2 - x1);
}
int main7( )
{
//freopen("/home/liyuanshuo//ClionProject/C4Practice1/in.in", "r", stdin);
int n, ans = 0;
cin>>n;
for (int i = 0 ; i < n ; ++i)
{
cin>>a[i];
}
for (int j = 0 ; j < n ; ++j)
{
for (int i = j+1 ; i < n ; ++i)
{
swap( a[i], a[j] );
ans = max( ans, Distance(n));
swap( a[i], a[j]);
}
}
cout<<ans<<endl;
return 0;
}
相关文章推荐
- codeforces 676A Nicholas and Permutation
- CodeForces 676A Nicholas and Permutation
- CodeForces 676A Nicholas and Permutation(移动数字游戏)
- codeforces 676A Nicholas and Permutation
- CodeForces - 676A Nicholas and Permutation (模拟) 水
- codeforces 676A (水题)
- Codeforces 510C - Fox And Names
- 【CodeForces】A. String Task
- codeforces 589B(两次排序 + 暴力 ) (重点在于思路)
- Codeforces 779C-Dishonest Sellers
- CodeForces-731E Funny Game(DP+Games)
- codeforces730F - Ber Patio
- codeforces 510E Fox And Dinner 奇偶建图+最大流
- Codeforces 41D Pawn 简单dp
- CodeForces 705A(训练水题)
- CodeForces - 777C Alyona and Spreadsheet (vector存储二维数组)
- CodeForces - 492D Vanya and Computer Game 二分
- Codeforces 906D:Power Tower-扩展欧拉定理
- CodeForces 208A
- CodeForces 607 B. Zuma(区间DP)