Cod sursa(job #302512)
#include<fstream.h>
ifstream f("ordine.in");
ofstream g("ordine.out");
long b[27];
int caut_urmat(int i)
{
int j;
for (j=i+1; j<=26; j++)
if (b[j]>0) return j;
return 0;
}
int main ()
{
char a[1000001];
long i,poz;
f.get(a,1000001);
for (i=1; i<=26; i++)
b[i]=0;
for (i=0; i<strlen(a); i++)
b[int(a[i])-96]++;
for (i=1; i<=26; i++)
{
if (b[i]==1) { g<<char(i+96); b[i]=0; }
else if (b[i]>1)
{
g<<char(i+96); b[i]--;
while (b[i]>0)
{
poz=caut_urmat(i);
g<<char(poz+96);
b[poz]--;
g<<char(i+96);
b[i]--;
}
}
}
return 0;
}