fork(6) download
  1. #include<iostream>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. using namespace std;
  5. void swap(int &a,int &b);
  6. void Next(int a[],int n,int stt);
  7. void Result(int a[],int n,int stt);
  8. void process(char xau[],int stt){
  9. int n=strlen(xau);
  10. int a[80];
  11. for(int i=0;i<n;i++){
  12. switch(xau[i]){
  13. case '1':a[i]=1;break;
  14. case '2':a[i]=2;break;
  15. case '3':a[i]=3;break;
  16. case '4':a[i]=4;break;
  17. case '5':a[i]=5;break;
  18. case '6':a[i]=6;break;
  19. case '7':a[i]=7;break;
  20. case '8':a[i]=8;break;
  21. case '9':a[i]=9;break;
  22. case '0':a[i]=0;break;
  23. }
  24. }
  25. int dem=0;
  26. for(int i=0;i<n-1;i++){
  27. if (a[i]>=a[i+1]) dem++;
  28. }
  29. if(dem!=n-1)
  30. Next(a,n,stt);
  31. else {
  32. cout<<stt<<" BIGGEST"<<endl;
  33. }
  34. }
  35. void swap(int &a,int &b){
  36. int tg=a;
  37. a=b;
  38. b=tg;
  39. }
  40. void Result(int a[],int n,int stt){
  41. cout<<stt<<" ";
  42. for(int i=0;i<n;i++){
  43. cout<<a[i];
  44. }
  45. cout<<endl;
  46. }
  47. void Next(int a[],int n,int stt){
  48. int j,k,r,s;
  49. j=n-1;
  50. while(a[j]<=a[j-1]) {
  51. j--;
  52. }
  53. k=n-1;
  54. while(a[k]<a[j-1]){
  55. k--;
  56. break;
  57. }
  58. swap(a[j-1],a[k]);
  59. r=j;
  60. s=n-1;
  61. while(r<s){
  62. swap(a[r],a[s]);
  63. r++;
  64. s--;
  65. }
  66. Result(a,n,stt);
  67. }
  68. int main(){
  69. char a[80];
  70. int n,stt;
  71. cin>>n;
  72.  
  73. while(n--){
  74. cin>>stt;
  75. cin.ignore();
  76. cin.getline(a,100);
  77. process(a,stt);
  78. }
  79. return 0;
  80. }
Success #stdin #stdout 0s 3348KB
stdin
3
1 123
2 247134399742
3 987
stdout
1 132
2 247134423799
3 BIGGEST