Pagini recente » Cod sursa (job #3167631) | Cod sursa (job #272155) | Cod sursa (job #1151663) | Cod sursa (job #15783) | Cod sursa (job #120271)
Cod sursa(job #120271)
#include <cstdio>
#include <cstring>
using namespace std;
#define FIN "ordine.in"
#define FOUT "ordine.out"
#define MAX_N 1000005
char c[MAX_N];
int fr[1 << 5];
int N;
void solve ()
{
int i, j;
char h = ' ';
for (i = 0; i < N; ++i)
++fr[c[i] - 96];
for (i = 1; i <= N; ++i)
{
if ((N - i + 1) & 1)
for (j = 1; j <= 26; ++j)
if (fr[j] == ((N - i + 1)/2 + 1))
{
--fr[j];
h = j + 96;
printf ("%c", h);
break;
}
for (j = 1; j <= 26; ++j)
if (fr[j] && j + 96 != h)
{
--fr[j];
h = j + 96;
printf ("%c", h);
break;
}
}
}
int main ()
{
freopen (FIN, "r", stdin);
freopen (FOUT, "w", stdout);
gets (c);
N = strlen (c);
solve ();
return 0;
}