Cod sursa(job #132944)

Utilizator perticas_catalinperticas catalin perticas_catalin Data 6 februarie 2008 22:59:11
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<stdio.h>
#include<string.h>
FILE*fin=fopen("ordine.in","r");
FILE*fout=fopen("ordine.out","w");
#define maxn 1000001
int nc[30],n;
char s[maxn];
int main()
{
  int i,j,ant='0',g;
  for(i='a';i<='z';i++)
    nc[i-'a']=0;
  fscanf(fin,"%s",&s);
  n=strlen(s);
  for(j=0;j<n;j++)
    nc[s[j]-'a']++;
  for(j=1;j<=n;j++)
  {
    g=0;
    for(i='a';i<='z';i++)
      if(2*nc[i-'a']>n-j+1){g=1;break;}
    if(g==1)
    {
      fprintf(fout,"%c",i);
      nc[i-'a']--;
      ant=i;
    }
    else for(i='a';i<='z';i++)
	   if(nc[i-'a']>0&&i!=ant)
	   {
	     fprintf(fout,"%c",i);
	     nc[i-'a']--;
	     ant=i;
             break;
	   }
  }
  return 0;
}