Cod sursa(job #530109)
# include <fstream>
using namespace std;
std :: ifstream f ("ordine.in");
std :: ofstream g ("ordine.out");
char c;
int a[200], nr;
inline bool litera (char c){
if (c >= 'a' && c <= 'z') return true;
return false;
}
int main (){
while (litera (c = f.get ())){
++a[c];
++nr;
}
int lt;
for (; nr > 0; ){
if (a['a' - 0] == 0) a['a' - 0] = 2000000000;
int la = 'a';
for (int i = 98; i <= 123; ++i)
if (a[i] > 0 && ((la == lt && a[i] > 0 && a[i] < 2000000000) || ( (nr >> 1) < a[i] && lt != i && a[i] > 0 && a[i] < 2000000000) || a[la] == 2000000000))
la = (char) i;
g << (char)la;
--a[la];
--nr;
lt = la;
}
g << '\n';
g.close ();
return 0;
}