Permutation

955 词

题目描述

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.

样例输入

1
2
3
4
3
2 1 3
3
3 2 1

样例输出

1
2
3
4
5
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

提示

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

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#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;
}