B. Gluttony
time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given an array a with n distinct integers. Construct an array b by permuting a such that for every non-empty subset of indices S = {x1, x2, ..., xk} (1 ≤ xi ≤ n, 0 < k < n) the sums of elements on that positions in a and b are different, i. e.

Input

The first line contains one integer n (1 ≤ n ≤ 22) — the size of the array.

The second line contains n space-separated distinct integers a1, a2, ..., an (0 ≤ ai ≤ 109) — the elements of the array.

Output

If there is no such array b, print -1.

Otherwise in the only line print n space-separated integers b1, b2, ..., bn. Note that b must be a permutation of a.

If there are multiple answers, print any of them.

Examples
input
2
1 2
output
2 1 
input
4
1000 100 10 1
output
100 1 1000 10
Note

An array x is a permutation of y, if we can shuffle elements of y such that it will coincide with x.

Note that the empty subset and the subset containing all indices are not counted.

讲一下题意把吧   这个题的意思就是n个数a1,a2,a3.......,这n个数重新排列构成b数组

                                     

这个题吧   sum1(左边式子)和sum2(右边式子)都是从0开始加的,只要我能够使a[i]<b[i],那么sum2一定比sum1要大   这就是确定的

但是很明显,我做不到这个,

于是我这么构造,每个a都找到一个刚刚大于它的数,最大的数用最小的数代替,假设我现在计算的集合中没有最大的数和最小的数的组合

那么我的每个b元素都大于与之对应的a    sum2一定大于sum1,

这时候我们再考虑最大的数和最小的数的组合在集合中的情况

由于我们的k<n && k>=1 那么我一定不可能把所有的情况都取干净  所以必定有一些集合是a < b没有取到的

这时候  正难则反  总共加和都是一样的,减去相差的,这时候sum1 > sum2了就

于是这样构造是能够满足题意的

丑陋的代码:

#include <iostream>

#include <cstdio>

#include <algorithm>

using namespace std;

int arr[30];

int res[30];

int bin(int left,int right,int n)

{

int mid ;

while(left < right)

{

mid = (left+right) >> 1;

if(res[mid] > n) {

right = mid;

}

else if(res[mid] == n) {

return res[mid+1];

}

else if(res[mid] < n) {

left = mid + 1;

}

}

return res[mid+1];

}

int main()

{

int n,i,j;

int maxn = 0;

bool color_flag = false;

scanf("%d",&n);

for(i =0 ; i < n; ++i) {

scanf("%d",arr+i);

res[i] = arr[i];

maxn = max(maxn,arr[i]);

}

sort(res,res+n);

for(i = 0; i < n - 1; ++i) {

if(arr[i] == maxn)

printf("%d ",res[0]);

else

printf("%d ",bin(0, n-1, arr[i]));

}

if(arr[i] == maxn)

printf("%d\n",res[0]);

else

printf("%d\n",bin(0, n-1, arr[i]));

}

codeforces 891 b的更多相关文章

  1. Codeforces 891 C Envy

    题目大意 给定一个 $n$ 个点 $m$ 条边的连通的无向图,每条边有一个权值,可能有重边.给出 $q$ 组询问,一组询问给出 $k$ 条边,问是否存在一棵最小生成树包含这 $k$ 条边. 思路 这道 ...

  2. codeforces #446 892A Greed 892B Wrath 892C Pride 891B Gluttony

    A  链接:http://codeforces.com/problemset/problem/892/A 签到 #include <iostream> #include <algor ...

  3. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  4. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  5. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  6. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

  7. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

  8. CodeForces - 274B Zero Tree

    http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...

  9. CodeForces - 261B Maxim and Restaurant

    http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...

随机推荐

  1. centos vncviewer

    CentOS6.5 安装vncserver实现图形化访问   一. 安装gnome图形化桌面 #yum groupinstall -y "X Window System" #yum ...

  2. 开源防火墙(pfSense)的安装部署与配置

    pfSense是一个基于FreeBSD架构的软件防火墙,通常会被安装在多网卡的主板上作为路由器或者防火墙去使用.往往这些硬件都比较廉价,高性能的配置也就1千元左右.pfSense具有商业防火墙的大部分 ...

  3. javascript 高级程序设计 七

    引言:好几天没有写随笔了,项目有点紧,恰好今天项目遇到了比较大阻塞,就只好来写一篇随笔来压压惊. 1.Date类型 创建一个新的Date:(除了new Date()外) var someDate = ...

  4. git的命令详解

    # git三个区 + 工作区: 写代码的地方 + 暂存区: 暂时存储代码 + 仓库区: 代码提交到了仓库区,就生成一条历史记录(版本) 工作区===> 暂存区 ===> 仓库区 # git ...

  5. ATM作业

    关于ATM作业,最近做了很久,才明白,其实看了很久的作业视频讲解,到不如将作业的整个下载下来进行运行,去了解程序本身的结构和运行方式.首先说需求,就感觉是各种懵逼,这才学了函数,和模块之间的简单调用就 ...

  6. Codeforces 792B. Counting-out Rhyme

    B. Counting-out Rhyme time limit per test: 1 second memory limit per test: 256 megabytes input: stan ...

  7. div同时使用两个class

    <p class="con hide">...</p> 1:使用空格分割 2:这个段落将同时应用这两个 class 制定的规则 3:如果二者有重叠,后者覆盖 ...

  8. Maximum Size Subarray Sum Equals k LT325

    Given an array nums and a target value k, find the maximum length of a subarray that sums to k. If t ...

  9. 全面了解HTTP请求方法说明

    超文本传输协议(HTTP, HyperText Transfer Protocol)是一种无状态的协议,它位于OSI七层模型的传输层.HTTP客户端会根据需要构建合适的HTTP请求方法,而HTTP服务 ...

  10. 阿里云help

    docker 技术的安全性问题,如果一个集群多个用户不希望互相可以看到对方的docker镜像和容器,怎么办? .... http://mirrors.aliyun.com/help/centos yu ...