Cod sursa(job #109376)
Utilizator | Data | 25 noiembrie 2007 10:35:01 | |
---|---|---|---|
Problema | Ordine | Scor | 0 |
Compilator | cpp | Status | done |
Runda | preONI 2008, Runda 1, Clasele 5-8 | Marime | 0.93 kb |
#include <stdio.h>
#include <string.h>
int d[30],n,z;
char a[1000020];
int main()
{
freopen("ordine.in","r",stdin);
freopen("ordine.out","w",stdout);
fgets(a,1000000,stdin);
n=strlen(a);
int i,j;
z=0;
for (i=0; i<n-1; ++i)
++d[a[i]-'a'+1];
for (i=1; i<=26; ++i)
{
while (d[i]>0)
{
j=i;
++z;
a[z]=i+'a'-1;
--d[i];
if (d[i]>0)
{
++z;
while (1)
{
++j;
if (d[j]>0)
{
a[z]=j+'a'-1;
--d[j];
j=i;
break;
}
}
}
}
}
printf("%s\n",a+1);
return 0;
}