Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<fstream>
- #include<vector>
- #include<algorithm>
- #include<string>
- #include<queue>
- #include<set>
- #include<map>
- using namespace std;
- ifstream input("INPUT.TXT");
- ofstream output("OUTPUT.TXT");
- vector<int> v;
- void next() {
- int pos = -1;
- int valnow = v[v.size() - 1];
- for (int i(v.size() - 2); i >= 0; i++) {
- if (valnow > v[i]) {
- pos = i;
- break;
- }
- valnow = v[i];
- }
- if (pos = -1) {
- reverse(v.begin(), v.end());
- }
- else {
- int minmax = v[pos];
- int minmaxpos = pos;
- for (int i(pos + 1); i < v.size(); i++) {
- if (v[i] > v[pos] && v[i] < minmax) {
- minmax = v[i];
- minmaxpos = i;
- }
- }
- swap(v[pos], v[minmaxpos]);
- reverse((v.begin() + pos + 1), v.end());
- }
- }
- void print(vector<int> a) {
- for (int i(0); i < a.size(); i++) {
- output << a[i] << ' ';
- }
- }
- int main() {
- int n;
- input >> n;
- for (int i(0); i < n; i++) {
- int a;
- input >> a;
- v.push_back(a);
- }
- next();
- print(v);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement