Cod sursa(job #187432)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 4 mai 2008 10:03:05
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
# include <stdio.h>   
  
FILE *f=fopen("ordine.in","r");   
FILE *g=fopen("ordine.out","w");   
int Ap[133];
char uc,c,ch;
int k=0,x=0,ok=0;

int main()
{
  fscanf(f,"%c",&c);
  do {   
   Ap[c]=Ap[c]+1;   
   k++;   
   fscanf(f,"%c",&c);;   
  }while (!feof(f));   
  fclose(f);   
  ch='a';      
  while (!Ap[ch])      
   ch++;      
  x=0;      
  while (x<k){      
   if (Ap[ch])      
   {      
    x++;ok=0;
    for (c=ch;c<='z';c++)      
      if (Ap[c]>=(k-x+1)/2+1) {      
                ok=1;      
                break;      
                  }      
    if (ok) {      
      fprintf(g,"%c",c);   
      Ap[c]--;   
      uc=c;   
    }   
    else {   
       if (uc!=ch) {   
    fprintf(g,"%c",ch);   
    Ap[ch]--;   
        uc=ch;      
        }      
        else {      
             ok=0;      
             for (c=ch+1;c<='z';c++)      
              if (Ap[c]!=0) {      
                    ok=1;      
                    break;      
                      }      
             if (ok)      
             {      
          fprintf(g,"%c",c);   
              uc=c;      
              Ap[c]--;      
             }      
        }      
    }   
    } else ch++;      
    }
  fprintf(g,"\n");
  fclose(g);   
  return 0;      
}