Codeforces Round #354 (Div. 2) A Nicholas and Permutation(水题)

原创 2016年06月01日 13:11:57

http://codeforces.com/problemset/problem/676/A
A. Nicholas and Permutation
time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard 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.

这个题很简单,只需要考虑三种情况就好了。
1.不交换
2.把位置靠前的放在最前面
3.把位置靠后的放在最后面
之后再比较这三种哪一个是符合条件的情况。
下面是AC代码:

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

int a[105];
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        int minx,maxx;
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
            if(a[i]==1)
            {
                minx=i+1;
            }
            else if(a[i]==n)
            {
                maxx=i+1;
            }
        }
        int s1=abs(maxx-minx);
        int maxxx=max(maxx,minx)-1;
        int minxx=n-min(maxx,minx);
        int re=max(s1,max(maxxx,minxx));
        printf("%d\n",re);
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Codeforces Round #354 (Div. 2)-Nicholas and Permutation

C. Vasya and String
  • sinat_34263473
  • sinat_34263473
  • 2016年06月02日 22:36
  • 158

Codeforces Round #258 (Div. 2)-(A,B,C,D,E)

A:Game With Sticks 水题。。。每次操作,都会拿走一个横行,一个竖行。 所以一共会操作min(横行,竖行)次。 #include #include #include #include ...
  • rowanhaoa
  • rowanhaoa
  • 2014年07月25日 14:39
  • 1481

【解题报告】Codeforces Round #401 (Div. 2)

简略的解题报告。
  • TRiddle
  • TRiddle
  • 2017年02月25日 17:55
  • 413

Codeforces Round #395 (Div. 2)(ABCD)

ps:打完这场cf才知道自己真的很菜,还是停留在AB题的水平,有时候CD其实很简单,但就是想不到,别人一眼看出而我就是想不到,有时候想到了点子上但就是突破不了 题目链接:  Codeforc...
  • qq_34731703
  • qq_34731703
  • 2017年02月03日 12:50
  • 500

Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) C. Felicity is Coming!组合学+集合

题意:给出n组数,每组gi个数,每个数属于1~m,每个数可以变化但变化前相同的数变化后依然相同,变化前不同的速变化后依然不同,且可能不变,但经过变化后每组的每种数的个数不会变化,求变化的总方案数。 组...
  • ProLightsfxjh
  • ProLightsfxjh
  • 2017年01月14日 01:28
  • 572

Codeforces Round #350 (Div. 2)(C)模拟

C. Cinema time limit per test 2 seconds memory limit per test 256 megabytes input ...
  • qq_24489717
  • qq_24489717
  • 2016年05月06日 15:29
  • 481

Codeforces Round #378 (Div. 2) E. Sleep in Class

链接:http://codeforces.com/contest/733/problem/E 题意:给一个只含'U'和'D'的字符串,U表示向右走,D表示向左走。每个格子踩一次之后翻转(U变D,D变...
  • Fsss_7
  • Fsss_7
  • 2016年11月15日 13:48
  • 359

Codeforces Round #460 (Div. 2) D. Substring(拓扑排序)

题目链接题意:有一个n个点m条边的有向图,每个节点有一个字母,路径的权值是路径上相同字母的最大个数。求最大的路径权值。思路:因为只有26个字母,所以直接假设其中一个字母为相同字母数最大的字母。枚举每一...
  • cyf199775
  • cyf199775
  • 2018年02月01日 13:55
  • 43

Codeforces Round #428 (Div. 2):D. Winter is here(组合数公式)

D. Winter is here time limit per test 3 seconds memory limit per test 256 megabytes input stan...
  • Jaihk662
  • Jaihk662
  • 2017年08月14日 14:52
  • 349

Codeforces Round #442 (Div. 2)

A. #include using namespace std; typedef long long ll; int main() { string s; cin >> s; ...
  • Egqawkq
  • Egqawkq
  • 2017年10月24日 02:15
  • 241
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Codeforces Round #354 (Div. 2) A Nicholas and Permutation(水题)
举报原因:
原因补充:

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