Cod sursa(job #164508)

Utilizator andreeanasturelmonica andreeanasturel Data 24 martie 2008 12:50:35
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<stdio.h>
long v[27];
int main()
{
FILE *f,*g;
char c;
long i,j,p;
f=fopen("ordine.in","r");
g=fopen("ordine.out","w");
while(!feof(f))
  {
  fscanf(f,"%c",&c);
  v[c-96]++;
  }
v[c-96]--;
char c1;
for(i=1;i<=26;i++)
 if(v[i]!=0)
  {
  p=i+1;
  while(v[p]==0&&p<26)
	p++;
  if(v[i]<=v[p])
	{ if(c1==i+96)
		for(j=1;j<=v[i];j++)
		{c=p+96;
	   fprintf(g,"%c",c);
	   c=i+96;
	   fprintf(g,"%c",c);
	   }
	  else
		for(j=1;j<=v[i];j++)
		{c=i+96;
	   fprintf(g,"%c",c);
	   c=p+96;
	   fprintf(g,"%c",c);
	   }
	 c1=c;
	 v[p]=v[p]-v[i];
	 v[i]=0;
	i=p-1;

	}
  else
	{ if(c1==i+96)
	  for(j=1;j<=v[p];j++)
	   {c=p+96;
	   fprintf(g,"%c",c);
	   c=i+96;
	   fprintf(g,"%c",c);
	   }
	 else
	 for(j=1;j<=v[p];j++)
	   {c=i+96;
	   fprintf(g,"%c",c);
	   c=p+96;
	   fprintf(g,"%c",c);
	   }

	  c1=c;
	  v[i]=v[i]-v[p];
      v[p]=0;
	i--;
	}
  }
fclose(f);
fclose(g);
return 0;
}