fork(2) download
  1. #include <iostream>
  2. using namespace std;
  3. int g,l,k,piatki,roznica,zera,postep,koncowka=0;
  4. string cyfra;
  5. bool wysw=true,roznspada=false,roznrosnie=false,zerujemy=false,rowna=false;
  6. int main()
  7. {
  8. cin>>cyfra>>k;
  9. piatki=0,zera=0,l=cyfra.length();
  10. if (l+1<=k)
  11. {
  12. for(int c=0;c<=k-1;c++) cout<<"5";
  13. cout<<'\n';
  14. }
  15. else if (l==k)
  16. {
  17. for(int a=0;a<=l-1;a++)
  18. {
  19. if (cyfra[a]<='4')
  20. {
  21. for(int b=0;b<=k-1;b++) cout<<"5";
  22. cout<<'\n';
  23. a=l+1;
  24. }
  25. else if (cyfra[a]>='6')
  26. {
  27. cout<<"1";
  28. for(int d=0;d<=k-1;d++) cout<<"5";
  29. cout<<'\n';
  30. a=l+1;
  31. }
  32. else if (cyfra[a]=='5')
  33. {
  34. piatki++;
  35. if(piatki==l)
  36. {
  37. cout<<"1";
  38. for(int e=0;e<=k-1;e++) cout<<"5";
  39. cout<<'\n';
  40. a=l+1;
  41. }
  42. }
  43. }
  44. }
  45. else
  46. {
  47. for(int f=0;f<=l-1;f++)
  48. {
  49. if(cyfra[f]=='5') piatki++;
  50. }
  51. roznica=piatki-k;
  52. if (piatki==k&&k!=1)
  53. {
  54. for(int m=1;m<=k+1;m++)
  55. {
  56. if (cyfra[l-m]!='5')
  57. {
  58. //cout<<l-m<<endl;
  59. if(cyfra[l-m]=='4') zerujemy=true,m=20;
  60. else if (cyfra[l-m]=='9') koncowka=99,m=20;
  61. m=20;
  62. }
  63. else if(cyfra[l-m]=='5') koncowka ++;
  64. }
  65. if (koncowka<=k)
  66. {
  67. cyfra[l-1-koncowka]++;
  68. if(cyfra[l-1-koncowka]==':') cyfra[l-1-koncowka]='0',cyfra[(l-1-koncowka)-1]++;
  69. for(int p=1;p<=14;p++)
  70. {
  71. if(cyfra[(l-1-koncowka)-p]==':') cyfra[(l-1-koncowka)-p]='0',cyfra[(l-1-koncowka)-p-1]++;
  72. else p=15;
  73. }
  74. if (cyfra[0]=='0'||cyfra[0]==':') cout<<"1";
  75. if(zerujemy==true) cyfra[l-koncowka]='0';
  76. cout<<cyfra<<'\n',rowna=true;
  77. }
  78. }
  79. if (rowna==false)
  80. {
  81. if (piatki==k&&cyfra[l-1]=='5'&&cyfra[l-2]<='3') zerujemy=true,cyfra[l-2]++,cout<<cyfra<<'\n';
  82. else if (piatki==k&&cyfra[l-1]=='5'&&cyfra[l-2]=='4') zerujemy=true,cyfra[l-2]++,cyfra[l-1]='0',cout<<cyfra<<'\n';
  83. else if (l>=2&&roznica==0&&cyfra[l-1]=='5'&&cyfra[l-2]=='4') cyfra[l-1]='0',cyfra[l-2]='5',cout<<cyfra<<'\n';
  84. else if (k==1&&cyfra[l-1]=='5'&&piatki==1&&cyfra[l-2]=='4') cyfra[l-1]='0',cyfra[l-2]='5',cout<<cyfra<<'\n';
  85. else if (k==1&&cyfra[l-1]=='5'&&piatki==1&&cyfra[l-2]!='4'&&cyfra[l-2]!='9') cyfra[l-1]='5',cyfra[l-2]++,cout<<cyfra<<'\n';
  86. else if (piatki>=k&&cyfra[l-1]<='3') cyfra[l-1]++,cout<<cyfra<<'\n';
  87. else if (piatki+1>=k&&cyfra[l-1]=='4') cyfra[l-1]++,cout<<cyfra<<'\n';
  88. else if (piatki>=k&&cyfra[l-1]<='8'&&cyfra[l-1]>='6') cyfra[l-1]++,cout<<cyfra<<'\n';
  89. else if (roznica>=1&&cyfra[l-1]!='9') cyfra[l-1]++,cout<<cyfra<<'\n';
  90. else if (roznica>=0&&cyfra[l-1]!='9'&&cyfra[l-1]!='5') cyfra[l-1]++,cout<<cyfra<<'\n';
  91. else
  92. {
  93. for(g=l-1;g>=0;g--)
  94. {
  95. roznspada=false,roznrosnie=false;
  96. if(cyfra[g]<='4')
  97. {
  98. cyfra[g]='5',roznica++;
  99. if (roznica>=0)
  100. {
  101. g=-1;
  102. if (zerujemy==true) cyfra[l-1]='0';
  103. cout<<cyfra<<'\n';
  104. }
  105. }
  106. else if(cyfra[g]>='6')
  107. {
  108. cyfra[g-1]++;
  109. if (cyfra[g-1]=='6') roznica--,roznspada=true;
  110. if (cyfra[g-1]=='5') roznica++;//roznrosnie=true;
  111. if (roznica>=0&&wysw==true)
  112. {
  113. if(cyfra[g-1]==':')
  114. {
  115. cyfra[g-1]='0';
  116. cyfra[g-2]++;
  117. if(cyfra[g-2]=='6') roznica--,roznspada=true;
  118. if(cyfra[g-2]=='5') roznica++,roznrosnie=true;
  119. for(int h=2;h<=999;h++)
  120. {
  121. if(cyfra[g-h]==':')
  122. {
  123. cyfra[g-h]='0';
  124. cyfra[g-h-1]++;
  125. if(cyfra[g-h-1]=='6') roznica--,roznspada=true;
  126. if(cyfra[g-h-1]=='5') roznica++,roznrosnie=true;
  127. }
  128. else h=1000;
  129. }
  130. }
  131. cyfra[g]='0';
  132. if(roznspada==false)
  133. {
  134. g=-1;
  135. if(cyfra[0]=='0'||cyfra[0]==':') cout<<"1";
  136. if(cyfra[0]==':') cyfra[0]='0';
  137. if(roznrosnie==true)
  138. {
  139. for(int j=l-1;j>=0;j--)
  140. {
  141. if(cyfra[j]!='5') cyfra[j+1]='0',j=-1;
  142. }
  143. }
  144. if (zerujemy==true) cyfra[l-1]='0';
  145. cout<<cyfra<<'\n';
  146. wysw=false;
  147. }
  148. }
  149. cyfra[g]='5',roznica++;
  150. roznspada=false,roznrosnie=false;
  151. if (roznica>=0&&wysw==true)
  152. {
  153. if(cyfra[g-1]==':')
  154. {
  155. cyfra[g-1]='0';
  156. cyfra[g-2]++;
  157. if(cyfra[g-2]=='6') roznica--,roznspada=true;
  158. if(cyfra[g-2]=='5') roznica++,roznrosnie=true;
  159. for(int h=2;h<=999;h++)
  160. {
  161. if(cyfra[g-h]==':')
  162. {
  163. cyfra[g-h]='0';
  164. cyfra[g-h-1]++;
  165. if(cyfra[g-h-1]=='6') roznica--,roznspada=true;
  166. if(cyfra[g-h-1]=='5') roznica++,roznrosnie=true;
  167. }
  168. else h=1000;
  169. }
  170. }
  171. if(roznspada==false)
  172. {
  173. g=-1;
  174. if(cyfra[0]=='0'||cyfra[0]==':') cout<<"1";
  175. if(cyfra[0]==':') cyfra[0]='0';
  176. if(roznrosnie==true)
  177. {
  178. for(int j=l-1;j>=0;j--)
  179. {
  180. if(cyfra[j]!='5') cyfra[j+1]='0',j=-1;
  181. }
  182. }
  183. if (zerujemy==true) cyfra[l-1]='0';
  184. cout<<cyfra<<'\n';
  185. wysw=false;
  186. }
  187. }
  188. }
  189. }
  190. }
  191. }
  192. }
  193. return 0;
  194. }
Success #stdin #stdout 0s 15240KB
stdin
444999 3
stdout
445055