Cod sursa(job #267944)

Utilizator jupanubv92Popescu Marius jupanubv92 Data 28 februarie 2009 15:40:06
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>
#include<string.h>

char s[1000001];
int n,fol[30];

int este(int x)
{
   for(int i=1;i<=26;i++)
      if(fol[i]==(int)((n-x+1)/2)+1)
        return i;
   return 0;
}

int main()
{
  freopen("ordine.in","r",stdin);
  freopen("ordine.out","w",stdout);
  scanf("%s",&s);
  n=strlen(s);
  for (int i=0;i<n;i++)
    fol[s[i]-'a'+1]++;
  int nrc=1,x=1;
  for (int i=1;i<=26;i++)
    {if(este(x))
     {int v=este(x);
      printf("%c",v+'a'-1);x++;
      fol[v]--;
     }
    if(fol[i]>0)
      {
        printf("%c",i+'a'-1);x++;
        fol[i]--;nrc=i+1;
        while (fol[i]!=0)
          {
            while ((fol[nrc]==0)&&nrc<26)
              nrc++;
            printf("%c",nrc+'a'-1);
            fol[nrc]--;
            printf("%c",i+'a'-1);
            fol[i]--;
          }
      }
    }
  return 0;
}