lina_os

Untitled

Apr 23rd, 2025 (edited)
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.36 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define ull unsigned long long
  4.  
  5. using namespace std;
  6.  
  7. int main() {
  8.     ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
  9.     string s, a, b;
  10.     cin >> s >> a >> b;
  11.     ll n1=INT_MAX, n2=INT_MAX;
  12.     ll nn1=INT_MAX, nn2=INT_MAX;
  13.     vector<ll>af(26);
  14.     vector<ll>bf(26);
  15.     vector<ll>sf(26);
  16.     vector<ll>ssf(26);
  17.     for (auto i:a) {
  18.         af[i-'a']++;
  19.     }
  20.     for (auto i:b) {
  21.         bf[i-'a']++;
  22.     }
  23.     for (auto i:s) {
  24.         sf[i-'a']++;
  25.         ssf[i-'a']++;
  26.     }
  27.     for (int i=0; i<26; i++) {
  28.         if (af[i]) n1=min(n1,sf[i]/af[i]);
  29.         if (bf[i]) nn2=min(nn2,ssf[i]/bf[i]);
  30.     }
  31.     for (int i=0; i<26; i++) {
  32.         sf[i]-=n1*af[i];
  33.         ssf[i]-=nn2*bf[i];
  34.     }
  35.     for (int i=0; i<26; i++) {
  36.         if (bf[i]) n2=min(n2,sf[i]/bf[i]);
  37.         if (af[i]) nn1=min(nn1,ssf[i]/af[i]);
  38.     }
  39.     for (int i=0; i<26; i++) {
  40.         sf[i]-=n2*bf[i];
  41.         ssf[i]-=nn1*af[i];
  42.     }
  43.     if (n1+n2<nn1+nn2) {
  44.         swap(n1,nn1);
  45.         swap(n2,nn2);
  46.         for (int i=0; i<26; i++) {
  47.             sf[i]=ssf[i];
  48.         }
  49.     }
  50.     while (n1--) cout << a;
  51.     while (n2--) cout << b;
  52.     for (int i=0; i<26; i++) {
  53.         while (sf[i]--) cout << char(i+'a');
  54.     }
  55.     return 0;
  56. }
  57. /*
  58.  * 3 -2 2 -7 16 -5 17 -13 22 -25 36 -40
  59.  */
  60.  
  61.  
Advertisement
Add Comment
Please, Sign In to add comment