codeforces 891 B. Gluttony(构造)

来源:互联网 发布:五官立体知乎 编辑:程序博客网 时间:2024/05/22 16:39
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 ≤ n0 < 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
21 2
output
2 1 
input
41000 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.

思路:

每次b对应位置的元素是a对应位置刚好比a小一点的那个元素。

AC code

#include<bits/stdc++.h>using namespace std;int a[25],b[25],sub[25];bool cmp(int x,int y){    return a[x]<a[y];}int main(){    int n;cin>>n;    for(int i=1;i<=n;i++)    {        scanf("%d",&a[i]);        sub[i]=i;    }    sort(sub+1,sub+n+1,cmp);    for(int i=1;i<n;i++)        b[sub[i+1]]=a[sub[i]];    b[sub[1]]=a[sub[n]];    for(int i=1;i<n;i++)        cout<<b[i]<<" ";    cout<<b[n]<<endl;    return 0;}



原创粉丝点击