fork(2) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. typedef long int ll;
  5.  
  6. ll num=-1,num1=-1;
  7.  
  8. int findmin(int num, int digits, int sum)
  9. {
  10. if(digits==0&& sum==0)
  11. return num;
  12.  
  13. if(digits==0 && sum>0)
  14. return 0;
  15.  
  16. if(digits!=0 && sum==0)
  17. {
  18. while(digits)
  19. {
  20. num=num*10;
  21. digits--;
  22. }
  23. return num;
  24. }
  25.  
  26. if(sum>0 && digits!=0)
  27. {
  28. int i;
  29.  
  30. for( i=0; i<=9;i++)
  31. {
  32. int p= findmin(num*10+i,digits-1,sum-i);
  33. if(p!=0)
  34. return p;
  35. }
  36. }
  37.  
  38. }
  39.  
  40. int findmax(int num1, int digits, int sum)
  41. {
  42. if(digits==0&& sum==0)
  43. return num1;
  44.  
  45. if(digits==0 && sum<0)
  46. return 0;
  47.  
  48. if(digits!=0 && sum==0)
  49. {
  50. while(digits)
  51. {
  52. num1=num1*10;
  53. digits--;
  54. }
  55. return num1;
  56. }
  57.  
  58. if(sum>0 && digits!=0)
  59. {
  60. int i;
  61.  
  62. for( i=9;i>=0;i--)
  63. {
  64. int p= findmax(num1*10+i,digits-1,sum-i);
  65. if(p!=0)
  66. return p;
  67. }
  68. }
  69. return 0;
  70. }
  71.  
  72. int main() {
  73. // your code goes here
  74. int n,sum,s;
  75. cin>>n>>sum;
  76. s=sum;
  77. if(s==0)
  78. cout<<"-1 -1";
  79. else
  80. {
  81. int f=0;
  82. ll res1;
  83. for(int i=1;i<=9;i++)
  84. {
  85. num=i;
  86. res1= findmin(num,n-1,sum-i);
  87. if(res1!=0)
  88. {
  89. f++;
  90. cout<<res1<<" ";
  91. break;
  92. }
  93.  
  94. }
  95.  
  96. ll res2;
  97.  
  98. for(int j=9;j>=1;j--)
  99. {
  100. num1=j;
  101.  
  102. res2= findmax(num1,n-1,s-j);
  103. if(res2!=0)
  104. {
  105. f++;
  106. cout<<res2<<" ";
  107. break;
  108. }
  109. }
  110.  
  111. if(f!=2 || num1==-1 || num==-1)
  112. cout<<"-1 -1";
  113. }
  114. return 0;
  115. }
Success #stdin #stdout 0s 3344KB
stdin
2 1
stdout
10 10