Cod sursa(job #212257)

Utilizator tamicTamas Iulia tamic Data 4 octombrie 2008 21:29:55
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#include <string.h>

FILE *fin,*fout;
char s[1000001];
long contor[30];
char lit[30];
long i,j,n,ok,ver,ok2;

int main(){
	fin=fopen("ordine.in","r");
   fout=fopen("ordine.out","w");
   fscanf(fin,"%s",&s);
   n=strlen(s);
   for(i=0;i<n;i++)contor[s[i]-'a']++;
   for(i=0;i<=25;i++) lit[i]=i+'a';
   ver=26; i=0;
   do{
      ok=0; ok2=0; i++;
   	for(j=0;j<=25;j++)
      	if(contor[j]==(n-i+1)/2+1 && lit[j]!=lit[ver]){
         	fprintf(fout,"%c",lit[j]);
            contor[j]--; ok=1;  ver=j;ok2=1;
         }
      if(!ok)
      	for(j=0;j<=25&&!ok;j++) if(contor[j]&&(lit[j]!=lit[ver])){
	         ok=1; ok2=1;
         	fprintf(fout,"%c",lit[j]);
            contor[j]--;  ver=j;
      }
   }while(ok2);
   fclose(fin); fclose(fout);
   return 0;
}