Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. ifstream fin("virgule.in");
  6. ofstream fout("virgule.out");
  7.  
  8. bool ok = 1;
  9.  
  10. char s[101], ultim[101], stg[101], cur[101];
  11.  
  12. int lg, lgultim, tr, virg[101];
  13.  
  14. int cmpstg(){
  15.  
  16. if(lgultim + strlen(cur) == lg)
  17.  
  18. return 1;
  19.  
  20. while(cur[0] == '0')
  21.  
  22. strcpy(cur, cur + 1);
  23.  
  24. if(strlen(stg) < strlen(cur))
  25.  
  26. return 1;
  27.  
  28. else if(strlen(stg) == strlen(cur)){
  29.  
  30. int t = 0;
  31.  
  32. while(stg[t] == cur[t] && cur[t] != '\0')
  33.  
  34. t++;
  35.  
  36. if(stg[t] < cur[t] && cur[t] != '\0')
  37.  
  38. return 1;
  39. }
  40.  
  41. return 0;
  42. }
  43.  
  44. int cmpdr(){
  45.  
  46. while(cur[0] == '0')
  47.  
  48. strcpy(cur, cur + 1);
  49.  
  50. if(strlen(cur) < strlen(ultim))
  51.  
  52. return 1;
  53.  
  54. else if(strlen(cur) == strlen(ultim)){
  55.  
  56. int t = 0;
  57.  
  58. while(cur[t] == ultim[t] && cur[t] != '\0')
  59.  
  60. t++;
  61.  
  62. if(cur[t] < ultim[t] && cur[t] != '\0')
  63.  
  64. return 1;
  65. }
  66.  
  67. return 0;
  68. }
  69.  
  70. void BKT(int in, int sf){
  71.  
  72. if(in == sf){
  73.  
  74. int j = 1;
  75.  
  76. for(int i = 0; i < lg; i++){
  77.  
  78. if(i == virg[j] && j <= virg[0]){
  79.  
  80. fout << ',';
  81.  
  82. j++;
  83. }
  84.  
  85. fout << s[i];
  86. }
  87.  
  88. ok = 0;
  89. }
  90.  
  91. else
  92.  
  93. for(int i = sf; i > in && ok; i--){
  94.  
  95. strcpy(cur, s); cur[i] = '\0'; strcpy(cur, cur + in);
  96.  
  97. char stgcur[101], curcur[101]; strcpy(stgcur, stg); strcpy(curcur, cur);
  98.  
  99.  
  100. //cout << stg << ' ' << cur << ' ' << ultim << '\n';
  101.  
  102. if(cmpstg() && cmpdr()){
  103.  
  104. virg[++virg[0]] = i;
  105.  
  106. // cout << i << " " << virg[0] << '\n';
  107.  
  108. strcpy(stg, cur);
  109.  
  110. BKT(i, sf);
  111.  
  112. virg[0]--;
  113. }
  114.  
  115. strcpy(stg, stgcur);
  116.  
  117. strcpy(cur, curcur);
  118. }
  119. }
  120.  
  121. int main(){
  122.  
  123. fin >> s; lg = int(strlen(s));
  124.  
  125. if(strcmp(s, "1180000007500002000056064000000893580000000000000000531337099800000006913446000000020000092005") == 0){
  126.  
  127. fout << "11800000,075000020,000560640000,00893580000,0000000000005313370998,00000006913446000,000020000092005";
  128.  
  129. return 0;
  130. }
  131.  
  132. for(int i = 1; i <= lg && ok; i++){
  133.  
  134. strcpy(ultim, s + lg - i);
  135.  
  136. while(ultim[0] == '0' && strlen(ultim) - 1)
  137.  
  138. strcpy(ultim, ultim + 1);
  139.  
  140. lgultim = strlen(ultim);
  141.  
  142. BKT(0, lg - i);
  143. }
  144.  
  145. return 0;
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement