Cod sursa(job #530454)
#include <fstream>
using namespace std;
char original[10002], last = -1;
int size, F[26];
int main()
{
ifstream fin("ordine.in");
ofstream fout("ordine.out");
fin.getline(original, sizeof(original));
for (int i = 0; original[i] != '\0'; ++i, ++size)
++F[original[i] - 'a'];
for (int i = 1; i <= size; ++i)
{
int setnow = -1;
for (int j = 0; j < 26; ++j)
if (last != j && F[j] == (size - i + 1) / 2 + 1)
{
setnow = j;
break;
}
if (setnow != -1)
{
fout << char(setnow + 'a');
--F[setnow];
last = setnow;
}
else
{
for (int j = 0; j < 26; ++j)
if (last != j && F[j])
{
fout << char(j + 'a');
--F[j];
last = j;
break;
}
}
}
fin.close();
fout.close();
}