题目描述

For given a sequence A={a0,a1,…,an−1}, print the previous permutation and the next permutation in lexicographic order.

输入

A sequence is given in the following format.

a0 a1…an−1

输出

Print the previous permutation, the given sequence and the next permutation in the 1st, 2nd and 3rd lines respectively. Separate adjacency elements by a space character. Note that if there is no permutation, print nothing in the corresponding line.

样例输入

3
2 1 3
3
3 2 1

样例输出

1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

提示

1≤n≤9 ai consist of 1,2,…,n

题解

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
inline void print(vector<int>& t){
    for(auto i:t)printf("%d ",i);puts("");
}
int main()
{
    int n;
    cin >> n;
    vector<int> a(n);
    for (int i = 0; i < n; i++)
        cin >> a[i];
    vector<int> prev(a), next(a);
    prev_permutation(prev.begin(), prev.end());
    next_permutation(next.begin(), next.end());
    if(prev<a)print(prev);
    print(a);
    if(next>a)print(next);
    return 0;
}