Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- const double EPS = 1e-9;
- const int INF=1e9+7;
- int n;
- void perm(vector <int> & p) {
- for (int i = n - 2; i >= 0; --i){
- int id = i + 1;
- if (p[i] < p[i + 1]){
- for (int j = i + 1; j < n; ++j){
- if (p[j] > p[i] && p[j] < p[id])
- id = j;
- }
- swap(p[i], p[id]);
- reverse(p.begin() + i + 1, p.end());
- return;
- }
- }
- for (auto i: p) {
- i = 0;
- }
- }
- void prev_perm(vector <int> & p) {
- for (int i = n - 2; i >= 0; --i){
- int id = i + 1;
- if (p[i] > p[i + 1]){
- for (int j = i + 1; j < n; ++j){
- if (p[j] < p[i] && p[j] > p[id])
- id = j;
- }
- swap(p[i], p[id]);
- reverse(p.begin() + i + 1, p.end());
- return;
- }
- }
- for (auto i: p) {
- i = 0;
- }
- }
- int main() {
- cin >> n;
- vector<int> p1(n), p2(n);
- for (int i = 0; i<n; ++i) {
- cin >> p1[i];
- p2[i] = p1[i];
- }
- perm(p1);
- prev_perm(p2);
- for (auto i: p1) {
- cout << i << ' ';
- }
- cout << endl;
- for (auto i: p2) {
- cout << i << ' ';
- }
- cout << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement