fork(2) download
  1. #include<stdio.h>
  2. #include<string.h>
  3. char str[1001];
  4. int maxs,maxe;
  5. int magcomp(int x,int y){
  6. while(str[x]=='0'){
  7. x++;
  8. }
  9. while(str[maxs]=='0'){
  10. maxs++;
  11. }
  12. if((y-x)==(maxe-maxs)){
  13. while(maxs<=maxe && x<=y){
  14. if(str[x]>str[maxs]){
  15. return 1;
  16. }
  17. maxs++;
  18. x++;
  19. }
  20. }
  21. else if((y-x)>(maxe-maxs)){
  22. return 1;
  23. }
  24. else{
  25. return 0;
  26. }
  27. return 0;
  28. }
  29. int main(){
  30. int i,len;
  31. int prev,current,next;
  32. scanf("%s",str);
  33. len=strlen(str);
  34. i=0;
  35. while(str[i]=='0'){
  36. i++;
  37. }
  38. prev=i;
  39. int flag;
  40. if(str[prev]>='A' && str[prev]<='Z'){
  41. str[prev]='9';
  42. i++;
  43. }
  44. while(i<len && str[i]>='0' && str[i]<='9'){
  45. i++;
  46. }
  47. current=i;
  48. maxs=prev;
  49. maxe=current-1;
  50. if(current<len){
  51. str[current]='9';
  52. i++;
  53. while(i<len && str[i]>='0' && str[i]<='9'){
  54. i++;
  55. }
  56. if(i<len){
  57. next=i;
  58. while(1){
  59. str[current]='9';
  60. flag=magcomp(prev+1,next-1);
  61. if(flag){
  62. maxs=prev+1;
  63. maxe=next-1;
  64. }
  65. prev=current;
  66. current=next;
  67. i=next+1;
  68. while(i< len && str[i]>='0' && str[i]<='9'){
  69. i++;
  70. }
  71. if(i==len){
  72. break;
  73. }
  74. next=i;
  75. }
  76. }
  77. else{
  78. next=i;
  79. flag=magcomp(prev+1,next-1);
  80. if(flag){
  81. maxs=prev+1;
  82. maxe=next-1;
  83. }
  84. }
  85. }
  86. flag=0;
  87. while(maxs<=maxe){
  88. if(!flag && str[maxs]=='0'){
  89. }
  90. else{
  91. flag=1;
  92. printf("%c",str[maxs]);
  93. }
  94. maxs++;
  95. }
  96. printf("\n");
  97. return 0;
  98. }
Success #stdin #stdout 0s 2856KB
stdin
0A000B99
stdout
9000