Pagini recente » Cod sursa (job #763907) | Cod sursa (job #1764118) | Cod sursa (job #2232880) | Cod sursa (job #767225) | Cod sursa (job #1204535)
#include <cstdio>
#include <cstring>
#include <algorithm>
#define NMAX 1000007
using namespace std;
char a[NMAX];
int Ap[NMAX];
int ok;
int main(){
freopen("ordine.in", "r", stdin);
freopen("ordine.out", "w", stdout);
gets(a);
int n = strlen(a) - 1;
for(int i = 0; i <= n; ++i)
++Ap[a[i] - 'a'];
while(1){
int poz = 0, poz2 = 0;
for(int i = 0; i <= 'z' - 'a'; ++i)
if(Ap[i] != 0){
poz = i;
break;
}
for(int i = poz + 1; i <= 'z' - 'a'; ++i)
if(Ap[i] != 0){
poz2 = i;
break;
}
if(poz2 == 0){
for(int i = 1; i <= Ap[poz]; ++i)
printf("%c", poz + 'a');
return 0;
}
int Min = min(Ap[poz], Ap[poz2]);
Ap[poz] -= Min;
Ap[poz2] -= Min;
for(int i = 1; i <= Min; ++i)
if(ok == 0)
printf("%c%c", poz + 'a', poz2 + 'a');
else
printf("%c%c", poz2 + 'a', poz + 'a');
if(Ap[poz2] != 0 || Ap[poz] == 0)
ok = 1;
else
ok = 0;
}
}