Advertisement
ke_timofeeva7

сшка ошоп 2 тур

Sep 27th, 2021
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.97 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <sstream>
  4. #include <vector>
  5. #include <cmath>
  6. #include <algorithm>
  7. #include <memory.h>
  8. #include <stdio.h>
  9. #include <stack>
  10. #include <deque>
  11. #include <queue>
  12. #include <set>
  13. #include <iterator>
  14. #include <map>
  15. #include <iomanip>
  16. #include <unordered_set>
  17. #define int long long
  18. #define pb push_back
  19. #define double long double
  20. #define endl "\n"
  21. #define un unsigned
  22. #define INF 1000000000009
  23. #define pii pair<int, int>
  24. #define all(v) v.begin(), v.end()
  25. using namespace std;
  26.  
  27. const int N = 100000;
  28.  
  29. int to_int(string s, int j, vector<int> &used, int skip)
  30. {
  31.     int ans = 0;
  32.  
  33.     int i = -1;
  34.     int k = 0;
  35.  
  36.     while (k < j)
  37.     {
  38.         i++;
  39.  
  40.         if (used[i] || skip == i)
  41.         {
  42.             continue;
  43.         }
  44.  
  45.         ans = ans * 10 +  (s[i] - '0');
  46.         k++;
  47.     }
  48.  
  49.     return ans;
  50. }
  51.  
  52. int to_int_for_b(string s, int j)
  53. {
  54.     int ans = 0;
  55.  
  56.     for (int i = j; i < s.size(); i++)
  57.     {
  58.         ans = ans * 10 + (s[i] - '0');
  59.     }
  60.  
  61.     return ans;
  62. }
  63.  
  64. signed main()
  65. {
  66.     ios_base::sync_with_stdio();
  67.     cin.tie(0);
  68.     cout.tie(0);
  69.  
  70.     string a, b;
  71.     cin >> a >> b;
  72.  
  73.     sort(all(a));
  74.  
  75.     if (b.size() > a.size())
  76.     {
  77.         for (int i = a.size() - 1; i >= 0; i--)
  78.         {
  79.             cout << a[i];
  80.         }
  81.  
  82.         return 0;
  83.     }
  84.  
  85.     int ans = 0;
  86.  
  87.     vector<int> used(20, 0);
  88.  
  89.     int fl = 0;
  90.  
  91.     for (int i = 0; i < a.size(); i++)
  92.     {
  93.         int lol = 0;
  94.         for (int j = a.size() - 1; j >= 0; j--)
  95.         {
  96.             if (used[j])
  97.             {
  98.                 continue;
  99.             }
  100.  
  101.             if (a[j] < b[i])
  102.             {
  103.                 ans = ans * 10 + a[j] - '0';
  104.                 used[j] = 1;
  105.  
  106.                 if (a[j] < b[i])
  107.                 {
  108.                     fl = 1;
  109.                 }
  110.  
  111.                 break;
  112.             }
  113.  
  114.             if (a[j] == b[i] && !fl)
  115.             {
  116.                 int kek = to_int(a, a.size() - i - 1, used, j);
  117.                 int lol = to_int_for_b(b, i + 1);
  118.  
  119.                 if (kek <= lol)
  120.                 {
  121.                     ans = ans * 10 + a[j] - '0';
  122.                     used[j] = 1;
  123.  
  124.                     if (a[j] < b[i])
  125.                     {
  126.                         fl = 1;
  127.                     }
  128.  
  129.                     break;
  130.                 }
  131.             }
  132.  
  133.             if (fl)
  134.             {
  135.                 used[j] = 1;
  136.                 ans = ans * 10 + a[j] - '0';
  137.             }
  138.         }
  139.     }
  140.  
  141.     cout << ans;
  142.     return 0;
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement