#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
void getRes(string& res, vector<pair<int, char>>& v, int i){
if(v[i].second == res.back() || v[i].first == 0) return;
if(v[i].first > (v[(i+1)%3].first + v[(i+2)%3].first)){
res.push_back(v[i].second);
v[i].first--;
if(v[i].first > 0) {
res.push_back(v[i].second);
v[i].first--;
}
} else if (v[i].first < (v[(i+1)%3].first-v[(i+2)%3].first) && v[(i+2)%3].first > 0){
res.push_back(v[(i+2)%3].second);
v[(i+2)%3].first--;
} else if(v[i].first < (v[(i+2)%3].first - v[(i+1)%3].first) && v[(i+1)%3].first > 0){
res.push_back(v[(i+1)%3].second);
v[(i+1)%3].first--;
} else{
res.push_back(v[i].second);
v[i].first--;
}
}
string longestDiverseString(int a, int b, int c) {
vector<pair<int, char>> v = {{a, 'a'}, {b, 'b'}, {c, 'c'}};
sort(v.begin(), v.end());
string res = "";
bool flag = true;
while(flag){
for(int i=2; i>=0; i--){
getRes(res, v, i);
if(v[(i+1)%3].first == 0 && v[(i+2)%3].first == 0){
flag = false;
}
}
}
cout<<"长度="<<res.length()<<endl;
return res;
}
int main() {
// your code goes here
cout<<longestDiverseString(5,50,10)<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBnZXRSZXMoc3RyaW5nJiByZXMsIHZlY3RvcjxwYWlyPGludCwgY2hhcj4+JiB2LCBpbnQgaSl7CiAgICAgICAgaWYodltpXS5zZWNvbmQgPT0gcmVzLmJhY2soKSB8fCB2W2ldLmZpcnN0ID09IDApIHJldHVybjsKICAgICAgICBpZih2W2ldLmZpcnN0ID4gKHZbKGkrMSklM10uZmlyc3QgKyB2WyhpKzIpJTNdLmZpcnN0KSl7CiAgICAgICAgICAgIHJlcy5wdXNoX2JhY2sodltpXS5zZWNvbmQpOwogICAgICAgICAgICB2W2ldLmZpcnN0LS07CiAgICAgICAgICAgIGlmKHZbaV0uZmlyc3QgPiAwKSB7CiAgICAgICAgICAgIAlyZXMucHVzaF9iYWNrKHZbaV0uc2Vjb25kKTsKICAgICAgICAgICAgCXZbaV0uZmlyc3QtLTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAodltpXS5maXJzdCA8ICh2WyhpKzEpJTNdLmZpcnN0LXZbKGkrMiklM10uZmlyc3QpICYmIHZbKGkrMiklM10uZmlyc3QgPiAwKXsKICAgICAgICAgICAgcmVzLnB1c2hfYmFjayh2WyhpKzIpJTNdLnNlY29uZCk7CiAgICAgICAgICAgIHZbKGkrMiklM10uZmlyc3QtLTsKICAgICAgICB9IGVsc2UgaWYodltpXS5maXJzdCA8ICh2WyhpKzIpJTNdLmZpcnN0IC0gdlsoaSsxKSUzXS5maXJzdCkgJiYgdlsoaSsxKSUzXS5maXJzdCA+IDApewogICAgICAgICAgICByZXMucHVzaF9iYWNrKHZbKGkrMSklM10uc2Vjb25kKTsKICAgICAgICAgICAgdlsoaSsxKSUzXS5maXJzdC0tOwogICAgICAgIH0gZWxzZXsKICAgICAgICAgICAgcmVzLnB1c2hfYmFjayh2W2ldLnNlY29uZCk7CiAgICAgICAgICAgIHZbaV0uZmlyc3QtLTsKICAgICAgICB9CiAgICB9CiAgICBzdHJpbmcgbG9uZ2VzdERpdmVyc2VTdHJpbmcoaW50IGEsIGludCBiLCBpbnQgYykgewogICAgICAgIHZlY3RvcjxwYWlyPGludCwgY2hhcj4+IHYgPSB7e2EsICdhJ30sIHtiLCAnYid9LCB7YywgJ2MnfX07CiAgICAgICAgc29ydCh2LmJlZ2luKCksIHYuZW5kKCkpOwogICAgICAgIHN0cmluZyByZXMgPSAiIjsKICAgICAgICBib29sIGZsYWcgPSB0cnVlOwogICAgICAgIHdoaWxlKGZsYWcpewogICAgICAgICAgICBmb3IoaW50IGk9MjsgaT49MDsgaS0tKXsKICAgICAgICAgICAgICAgIGdldFJlcyhyZXMsIHYsIGkpOwogICAgICAgICAgICAgICAgaWYodlsoaSsxKSUzXS5maXJzdCA9PSAwICYmIHZbKGkrMiklM10uZmlyc3QgPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgZmxhZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvdXQ8PCLplb/luqY9Ijw8cmVzLmxlbmd0aCgpPDxlbmRsOwogICAgICAgIHJldHVybiByZXM7CiAgICB9CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCWNvdXQ8PGxvbmdlc3REaXZlcnNlU3RyaW5nKDUsNTAsMTApPDxlbmRsOwoJcmV0dXJuIDA7Cn0=