Cod sursa(job #166816)

Utilizator pandaemonAndrei Popescu pandaemon Data 28 martie 2008 15:33:20
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>
#include<string.h>
#define SMAX 1000002

char *p; long n,i,s[26],gasit=0,dusman,last=-1;

				   /// if dusman!=-1 --> s-a gasit caracter
				   /// care apare de (n-i)/2+1 ori



int cauta(int interzis)
{

  for(int j=25;j>=0;j--)  {
  if(s[j]>0 && j!=interzis) last=j;
  if( s[j] == (n-i)/2+1 && j!=interzis) return last=dusman=j;
			  }
  return last;

}



main()
{
  freopen("ordine.in","r",stdin);
  freopen("ordine.out","w",stdout);

  p=new char[SMAX];

  gets(p);  n=strlen(p);

  for(i=0;i<n;i++) s[ p[i]-'a' ] ++;

  delete p;

  for(i=0;i<n && dusman!=-1;i++)

    printf( "%c" , cauta(last)+'a' );


   if(dusman!=-1)

    for(;i<n;i++)
     if(last!=dusman) {printf("%c",dusman+'a'); s[dusman--]; last=dusman;}
     else {printf("%c",cauta(dusman)+'a'); s[last--];}


 printf("\n"); return 0; }