Advertisement
a53

bug

a53
May 29th, 2022
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.42 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. ifstream fin("bug.in");
  4. ofstream fout("bug.out");
  5. string str, sol;
  6. int T, ls, sb;
  7. int bl[100001], P;
  8. set<char>seg;
  9.  
  10. int main()
  11. {
  12. fin>>T;
  13. fin>>str;
  14. ls=str.size();
  15. bl[0]=ls;
  16. for(int i=ls-1; i>=0; --i)
  17. {
  18. seg.insert(str[i]);
  19. if(seg.size()==10)
  20. {
  21. bl[++sb]=i;
  22. seg.clear();
  23. }
  24. }
  25. if(seg.size()>0)
  26. {
  27. for(int i=1; i<=9; ++i)
  28. {
  29. auto pos = seg.find(i+'0');
  30. if(pos==seg.end())
  31. {
  32. sol.push_back(i+'0');
  33. break;
  34. }
  35. }
  36. if(sol.size()==0)
  37. {
  38. sol.push_back('0'+1);
  39. sol.push_back('0');
  40. }
  41. for(int i=sb; i>=1; --i)
  42. {
  43. char ch=sol[sol.size()-1];
  44. seg.clear();
  45. int ok=0;
  46. for(int j=bl[i]; j<bl[i-1] && !ok; ++j)
  47. if(str[j]==ch)
  48. {
  49. for(int k=j+1; k<bl[i-1]; ++k)
  50. seg.insert(str[k]);
  51. for(char c='0'; c<='9'; ++c)
  52. {
  53. auto pos = seg.find(c);
  54. if(pos==seg.end())
  55. {
  56. sol.push_back(c);
  57. break;
  58. }
  59. }
  60. ok=1;
  61. }
  62. }
  63. if(T==2)
  64. fout<<sol;
  65. else
  66. fout<<sol.size();
  67. }
  68. else
  69. {
  70. sol.push_back('0'+1);
  71. for(int i=sb; i>=1; --i)
  72. {
  73. char ch=sol[sol.size()-1];
  74. seg.clear();
  75. int ok=0;
  76. for(int j=bl[i]; j<bl[i-1] && !ok; ++j)
  77. if(str[j]==ch)
  78. {
  79. for(int k=j+1; k<bl[i-1]; ++k)
  80. seg.insert(str[k]);
  81. for(char c='0'; c<='9'; ++c)
  82. {
  83. auto pos = seg.find(c);
  84. if(pos==seg.end())
  85. {
  86. sol.push_back(c);
  87. break;
  88. }
  89. }
  90. ok=1;
  91. }
  92. }
  93. if(T==2)
  94. fout<<sol;
  95. else
  96. fout<<sol.size();
  97. }
  98. return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement