Pagini recente » Cod sursa (job #1606777) | Cod sursa (job #2896424) | Cod sursa (job #2288678) | Cod sursa (job #2205381) | Cod sursa (job #968540)
Cod sursa(job #968540)
#include <cstdio>
#include <cstring>
using namespace std;
#define SMAX 1000001
#define ALF 27
int i, N, n;
int F[ALF], v[ALF];
char s[SMAX];
int st, dr, pas;
char a, b, last;
int turn = 1;
int main() {
freopen("ordine.in","r",stdin);
freopen("ordine.out","w",stdout);
scanf("%s", s + 1);
N = strlen(s + 1);
for (i = 1; i <= N; ++i)
++F[s[i] - 'a'];
for (i = 0; i <= 26; ++i)
if (F[i])
v[++n] = i;
st = v[1];
for (i = 2; i <= n; ++i) {
dr = v[i];
while (F[st] && F[dr]) {
a = st + 'a';
b = dr + 'a';
if (a == last)
printf("%c%c", b, a),
last = a;
else
printf("%c%c", a, b),
last = b;
--F[st], --F[dr];
}
if (F[dr])
st = dr;
}
if (F[st]) {
a = st + 'a';
if (a != last)
printf("%c\n", a);
}
return 0;
}