Advertisement
Guest User

Untitled

a guest
Nov 18th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.63 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #include <iostream>
  3. #include <cstdio>
  4. #include <cstdlib>
  5. #include <cmath>
  6. #include <algorithm>
  7. #include <vector>
  8. #include <map>
  9. #include <set>
  10. #include <bitset>
  11. #include <queue>
  12. #include <stack>
  13. #include <sstream>
  14. #include <cstring>
  15. #include <numeric>
  16. #include <ctime>
  17. #include <iomanip>
  18.  
  19. #define re return
  20. #define fi first
  21. #define se second
  22. #define mp make_pair
  23. #define pb push_back
  24. #define all(x) (x).begin(), (x).end()
  25. #define sz(x) ((int) (x).size())
  26. #define rep(i, n) for (int i = 0; i < (n); i++)
  27. #define rrep(i, n) for (int i = (n) - 1; i >= 0; i--)
  28. #define sqr(x) ((x) * (x))
  29. #define sqrt(x) sqrt(abs(x))
  30. #define tr(x, y) ((x)*(x) + (y)*(y))
  31.  
  32. using namespace std;
  33.  
  34. typedef long long ll;
  35. typedef pair <int, int> pii;
  36. typedef pair <ll, ll> pll;
  37. typedef vector <int> vi;
  38. typedef vector <ll> vll;
  39. typedef long double LD;
  40.  
  41. const LD pi = 3.141592653589793238462643;
  42.  
  43. string s;
  44. int was[100];
  45. int n;
  46. int a[1000];
  47.  
  48. string get_ans(int x)
  49. {
  50. string c = "10012233445566778899";
  51. re c.substr(0, x);
  52. }
  53.  
  54. bool ch()
  55. {
  56. rep(i, 10) if (was[i] > 2) re 0;
  57. re 1;
  58. }
  59.  
  60. int main()
  61. {
  62. #ifdef EKLER
  63. //freopen("input.txt", "r", stdin);
  64. //freopen("output.txt", "w", stdout);
  65. #else
  66. //freopen("input.txt", "r", stdin);
  67. //freopen("output.txt", "w", stdout);
  68. #endif
  69.  
  70. ios::sync_with_stdio(0);
  71. cin.tie(0);
  72. cout.tie(0);
  73.  
  74. cin >> s;
  75. n = sz(s);
  76. rep(i, sz(s))
  77. {
  78. a[i] = s[i] - '0';
  79. }
  80. string ans = "";
  81. string inf = "";
  82. rep(i, n) ans += "9";
  83. inf = ans;
  84. string tmp = "";
  85. int pos;
  86. string cur = "";
  87. rep(i, n)
  88. {
  89. int k = a[i] + 1;
  90. if (!ch()) break;
  91. while(k <= 9 && was[k] == 2) k++;
  92. if (k <= 9)
  93. {
  94. was[k]++;
  95. tmp = cur;
  96. cur += (char)(k + '0');
  97. pos = i + 1;
  98. for (int t = pos; t < n; t++)
  99. {
  100. rep(j, 10)
  101. {
  102. if (was[j] < 2)
  103. {
  104. cur += (char)(j + '0');
  105. was[j]++;
  106. break;
  107. }
  108. }
  109. }
  110. ans = min(ans, cur);
  111. rep(t, 10) was[t] = 0;
  112. rep(j, i) was[a[j]]++;
  113. cur = tmp;
  114. }
  115. cur += s[i];
  116. was[a[i]]++;
  117. }
  118. if (s == "99") {
  119. cout << 100;
  120. re 0;
  121. }
  122. if (s == "9") {
  123. cout << 10;
  124. re 0;
  125. }
  126. if (ans == inf && n > 2) ans = get_ans(n + 1);
  127. cout << ans;
  128. re 0;
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement