Pagini recente » Cod sursa (job #2842247) | Cod sursa (job #2273155) | Cod sursa (job #2705632) | Cod sursa (job #2601844) | Cod sursa (job #111492)
Cod sursa(job #111492)
#include <cstdio>
#define Nmax 1000015
int n;
char sir[Nmax];
int ct[32];
void citire()
{
char *i;
fgets(sir + 1, Nmax, stdin);
for (i = sir + 1; 'a' <= *i && *i <= 'z'; ++i)
++ct[*i - 'a' + 1];
}
void solve()
{
int i, sum = 0, ok, ind = 0, last = 0;
for (i = 1; i <= 27; ++i)
sum += ct[i];
while (sum > 0)
{
ok = 1;
for (i = 1; i <= 27; ++i)
if (ct[i] > sum - ct[i])
{
sir[++ind] = i - 1 + 'a';
ok = 0;
--ct[i];
--sum;
last = i;
break;
}
if (ok)
{
for (i = 1; i <= 27; ++i)
if (ct[i] && last != i)
{
sir[++ind] = i - 1 + 'a';
--ct[i];
--sum;
last = i;
break;
}
}
}
printf("%s\n", sir + 1);
}
int main()
{
freopen("ordine.in", "r", stdin);
freopen("ordine.out", "w", stdout);
citire();
solve();
return 0;
}