Cod sursa(job #112089)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 3 decembrie 2007 03:21:03
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>
#include<string.h>
char cit[10010],a[30],*c,lt,cf;
long int i,j,fr[30],l,r,poz,k;
int main()
{
	FILE *f,*g;f=fopen("ordine.in","r");g=fopen("ordine.out","w");
	c=&cit[0];
	fscanf(f,"%s",c);
	l=strlen(c);
	for(i=0;i<27;i++)a[i]=(char)i+'a';
	for(i=0;i<l;i++)
	 fr[(long int)(c[i]-'a')]++;
	for(i=0;i<27;i++)
	 if(fr[i]) { fr[j]=fr[i];a[j]=a[i];j++;}
	for(i=j;i<=27;i++) {a[i]=0;fr[i]=0;}
        j--;
	while(j>1)
	{
		if(fr[j]>l-fr[j])
		  {fprintf(g,"%c",a[j]);fr[j]--;lt=a[j];}
		else
		 if(lt!=a[0])
		  {fprintf(g,"%c",a[0]);fr[0]--;lt=a[0];
		   if(!fr[0]){for(i=0;i<=j;i++){a[i]=a[i+1];fr[i]=fr[i+1];}j--;}
		  }
		 else
		  {fprintf(g,"%c",a[1]);fr[1]--;lt=a[1];
		   if(!fr[1]){for(i=1;i<=j;i++){a[i]=a[i+1];fr[i]=fr[i+1];}j--;}
		  }
		 l--;
	}
	if(l%2)for(;;);
	fprintf(g,"\n");
	fcloseall();
	return 0;
}