Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define ll long long
- #define ull unsigned long long
- using namespace std;
- int main() {
- ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
- string s, a, b;
- cin >> s >> a >> b;
- ll n1=INT_MAX, n2=INT_MAX;
- ll nn1=INT_MAX, nn2=INT_MAX;
- vector<ll>af(26);
- vector<ll>bf(26);
- vector<ll>sf(26);
- vector<ll>ssf(26);
- for (auto i:a) {
- af[i-'a']++;
- }
- for (auto i:b) {
- bf[i-'a']++;
- }
- for (auto i:s) {
- sf[i-'a']++;
- ssf[i-'a']++;
- }
- for (int i=0; i<26; i++) {
- if (af[i]) n1=min(n1,sf[i]/af[i]);
- if (bf[i]) nn2=min(nn2,ssf[i]/bf[i]);
- }
- for (int i=0; i<26; i++) {
- sf[i]-=n1*af[i];
- ssf[i]-=nn2*bf[i];
- }
- for (int i=0; i<26; i++) {
- if (bf[i]) n2=min(n2,sf[i]/bf[i]);
- if (af[i]) nn1=min(nn1,ssf[i]/af[i]);
- }
- for (int i=0; i<26; i++) {
- sf[i]-=n2*bf[i];
- ssf[i]-=nn1*af[i];
- }
- if (n1+n2<nn1+nn2) {
- swap(n1,nn1);
- swap(n2,nn2);
- for (int i=0; i<26; i++) {
- sf[i]=ssf[i];
- }
- }
- while (n1--) cout << a;
- while (n2--) cout << b;
- for (int i=0; i<26; i++) {
- while (sf[i]--) cout << char(i+'a');
- }
- return 0;
- }
- /*
- * 3 -2 2 -7 16 -5 17 -13 22 -25 36 -40
- */
Advertisement
Add Comment
Please, Sign In to add comment