Cod sursa(job #902781)

Utilizator superman_01Avramescu Cristian superman_01 Data 1 martie 2013 16:41:19
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<cstdio>
#include<cstring>


#define MAX_SIZE 1000005

FILE *f=fopen("ordine.in","r");
FILE *g=fopen("ordine.out","w");

using namespace std;

char sir[MAX_SIZE];
int frec[29],size;
int ant;
void read ( void )
{
	fgets(sir,MAX_SIZE,f);
	for(int i(0); sir[i] ; ++i,++size )
		++frec[sir[i]-'a'];
	
}
void solve ( void )
{
	ant=-1;
	for(int i(1) ; i <= size ; ++i )
	{ 
	     int ch=-1;	
		 
		for( int j(0) ;j < 26 ; ++j )
		
			if(  ( frec[j] ==  (( size - i +1 )/2 + 1) ) ) 
			{
				ch=j ;
				break;
				
			}			
		 
			
          if( ch != -1 )
		  {
			  fprintf(g,"%c",char(ch+'a'));
			  --frec[ch];
			  ant=ch;
		  }
		  else
			  for(int j(0); j < 26 ; j++ )
				  if( frec[j] && j!=ant)
				  {
					  fprintf(g,"%c",char(j+'a'));
					  		  --frec[j];
					  ant=j;
					  break;
				  }

			
		
	}		
	
	
	
}
int main( void )
{
	read();
	solve();
	return 0;	
}