Cod sursa(job #109376)

Utilizator raduzerRadu Zernoveanu raduzer 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;
}