// C++ program to find the smallest number which greater than a given number
// and has same set of digits as given number
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
// Utility function to swap two digits
void swap( char * a, char * b)
{
char temp = * a;
* a = * b;
* b = temp;
}
// Given a number as a char array number[], this function finds the
// next greater number. It modifies the same array to store the result
void findNext( char number[ ] , int n)
{
int i, j;
// I) Start from the right most digit and find the first digit that is
// smaller than the digit next to it.
for ( i = n- 1 ; i > 0 ; i-- )
if ( number[ i] > number[ i- 1 ] )
break ;
// If no such digit is found, then all digits are in descending order
// means there cannot be a greater number with same set of digits
if ( i== 0 )
{
cout << "Next number is not possible" ;
return ;
}
}
Ly8gQysrIHByb2dyYW0gdG8gZmluZCB0aGUgc21hbGxlc3QgbnVtYmVyIHdoaWNoIGdyZWF0ZXIgdGhhbiBhIGdpdmVuIG51bWJlcgovLyBhbmQgaGFzIHNhbWUgc2V0IG9mIGRpZ2l0cyBhcyBnaXZlbiBudW1iZXIKI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAovLyBVdGlsaXR5IGZ1bmN0aW9uIHRvIHN3YXAgdHdvIGRpZ2l0cwp2b2lkIHN3YXAoY2hhciAqYSwgY2hhciAqYikKewogICAgY2hhciB0ZW1wID0gKmE7CiAgICAqYSA9ICpiOwogICAgKmIgPSB0ZW1wOwp9CiAKLy8gR2l2ZW4gYSBudW1iZXIgYXMgYSBjaGFyIGFycmF5IG51bWJlcltdLCB0aGlzIGZ1bmN0aW9uIGZpbmRzIHRoZQovLyBuZXh0IGdyZWF0ZXIgbnVtYmVyLiAgSXQgbW9kaWZpZXMgdGhlIHNhbWUgYXJyYXkgdG8gc3RvcmUgdGhlIHJlc3VsdAp2b2lkIGZpbmROZXh0KGNoYXIgbnVtYmVyW10sIGludCBuKQp7CiAgICBpbnQgaSwgajsKIAogICAgLy8gSSkgU3RhcnQgZnJvbSB0aGUgcmlnaHQgbW9zdCBkaWdpdCBhbmQgZmluZCB0aGUgZmlyc3QgZGlnaXQgdGhhdCBpcwogICAgLy8gc21hbGxlciB0aGFuIHRoZSBkaWdpdCBuZXh0IHRvIGl0LgogICAgZm9yIChpID0gbi0xOyBpID4gMDsgaS0tKQogICAgICAgIGlmIChudW1iZXJbaV0gPiBudW1iZXJbaS0xXSkKICAgICAgICAgICBicmVhazsKIAogICAgLy8gSWYgbm8gc3VjaCBkaWdpdCBpcyBmb3VuZCwgdGhlbiBhbGwgZGlnaXRzIGFyZSBpbiBkZXNjZW5kaW5nIG9yZGVyCiAgICAvLyBtZWFucyB0aGVyZSBjYW5ub3QgYmUgYSBncmVhdGVyIG51bWJlciB3aXRoIHNhbWUgc2V0IG9mIGRpZ2l0cwogICAgaWYgKGk9PTApCiAgICB7CiAgICAgICAgY291dCA8PCAiTmV4dCBudW1iZXIgaXMgbm90IHBvc3NpYmxlIjsKICAgICAgICByZXR1cm47CiAgICB9Cn0=