Cod sursa(job #109554)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 25 noiembrie 2007 11:47:27
Problema Ordine Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 1, Clasele 5-8 Marime 0.88 kb
#include<stdio.h>
#include<string.h>
char s[1001];
int i,nr,sortat,aux,max,j,ci,sol[1001],v[1001];
long f[40];
int main()
{
freopen("ordine.in","r",stdin);
freopen("ordine.out","w",stdout);
gets(s);
nr=strlen(s);
for(i=0;i<nr;i++)
  {
  v[i+1]=s[i]-96;
  f[v[i+1]]++;
  if(v[i+1]>max) max=v[i+1];
  }
j=1;
for(i=1;i<=max;i++)
  {
  if(f[i] && sol[i]==0)
    sol[i]=i;
  else
    if(sol[i])
      {
      while(sol[j])
	j++;
      sol[j]=i;
      }
  ci=j;
  while(f[i]>1)
    {
    sol[ci+2]=i;
    f[i]--;
    ci=ci+2;
    }
  j++;
  }
/*for(i=nr+5;i>=1;i--)
  if(sol[i]==0 && sol[i+1])
    ci=sol[i+1];
for(i=nr;i>=1;i--)
  if(sol[i]!=ci && sol[i-1]!=ci)
    {
    nr++;
    for(j=nr-1;j>=i;j--)
      sol[j+1]=sol[j];
    sol[i]=ci;
    }*/
for(i=1;i<=1001;i++)
  if(sol[i]==0)
    continue;
  else
    printf("%c",sol[i]+96);
return 0;
}