Cod sursa(job #302612)
#include<fstream.h>
ifstream f("ordine.in");
ofstream g("ordine.out");
int i,a[25],poz=0,j,min=2000000001,max,c[1000001];
char p;
int main ()
{
while (f>>p)
{a[int(p)-97]++;
if ((int(p)-97)>max)max=int(p)-97;
if ((int(p)-97)<min)min=int(p)-97;}
c[0]=min;
a[min]--;
poz++;
for (i=0;i<=max;i++)
{if (a[i-1]&&i) i--;
if (c[poz-1]!=i && a[i]) {c[poz]=i;poz++;a[i]--;}
for (j=i+1;j<=max;j++)
if (c[poz-1]!=j && a[j]) {c[poz]=j;poz++;a[j]--;break;}
}
for (i=0;i<poz;i++) g<<char(c[i]+97);
return 0;
}