Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #include <iostream>
- #include <cstdio>
- #include <cstdlib>
- #include <cmath>
- #include <algorithm>
- #include <vector>
- #include <map>
- #include <set>
- #include <bitset>
- #include <queue>
- #include <stack>
- #include <sstream>
- #include <cstring>
- #include <numeric>
- #include <ctime>
- #include <iomanip>
- #define re return
- #define fi first
- #define se second
- #define mp make_pair
- #define pb push_back
- #define all(x) (x).begin(), (x).end()
- #define sz(x) ((int) (x).size())
- #define rep(i, n) for (int i = 0; i < (n); i++)
- #define rrep(i, n) for (int i = (n) - 1; i >= 0; i--)
- #define sqr(x) ((x) * (x))
- #define sqrt(x) sqrt(abs(x))
- #define tr(x, y) ((x)*(x) + (y)*(y))
- using namespace std;
- typedef long long ll;
- typedef pair <int, int> pii;
- typedef pair <ll, ll> pll;
- typedef vector <int> vi;
- typedef vector <ll> vll;
- typedef long double LD;
- const LD pi = 3.141592653589793238462643;
- string s;
- int was[100];
- int n;
- int a[1000];
- string get_ans(int x)
- {
- string c = "10012233445566778899";
- re c.substr(0, x);
- }
- bool ch()
- {
- rep(i, 10) if (was[i] > 2) re 0;
- re 1;
- }
- int main()
- {
- #ifdef EKLER
- //freopen("input.txt", "r", stdin);
- //freopen("output.txt", "w", stdout);
- #else
- //freopen("input.txt", "r", stdin);
- //freopen("output.txt", "w", stdout);
- #endif
- ios::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- cin >> s;
- n = sz(s);
- rep(i, sz(s))
- {
- a[i] = s[i] - '0';
- }
- string ans = "";
- string inf = "";
- rep(i, n) ans += "9";
- inf = ans;
- string tmp = "";
- int pos;
- string cur = "";
- rep(i, n)
- {
- int k = a[i] + 1;
- if (!ch()) break;
- while(k <= 9 && was[k] == 2) k++;
- if (k <= 9)
- {
- was[k]++;
- tmp = cur;
- cur += (char)(k + '0');
- pos = i + 1;
- for (int t = pos; t < n; t++)
- {
- rep(j, 10)
- {
- if (was[j] < 2)
- {
- cur += (char)(j + '0');
- was[j]++;
- break;
- }
- }
- }
- ans = min(ans, cur);
- rep(t, 10) was[t] = 0;
- rep(j, i) was[a[j]]++;
- cur = tmp;
- }
- cur += s[i];
- was[a[i]]++;
- }
- if (s == "99") {
- cout << 100;
- re 0;
- }
- if (s == "9") {
- cout << 10;
- re 0;
- }
- if (ans == inf && n > 2) ans = get_ans(n + 1);
- cout << ans;
- re 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement