Cod sursa(job #111880)

Utilizator FlorianFlorian Marcu Florian Data 2 decembrie 2007 12:24:34
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
FILE*f=fopen("ordine.in","r");
FILE*g=fopen("ordine.out","w");
long a[30];
char c;
int main()
	{
	long i,p,j,n=0;
	char x;
	char last;
	last='!';
	while(!feof(f))
		{
		fscanf(f,"%c",&c);
		if(c!='\n')
			{
			++n;
			p=(int)c;
			a[p-64-32]++;
			}
		}
	for(i=1;i<=n;++i)
		{
		//ne aflam pe poz i.
		x='!';
		for(j=1;j<=26;++j)
			{
			if(a[j]==(n-i+1)/2+1)  { x=(char)(j+96); a[j]--; break; }
			}
		if(x!='!') fprintf(g,"%c",x), last=x;
		else
			{
			for(j=1;j<=26;++j)
				{
				if(a[j])
					{
					x=(char)(j+96);
					if(x!=last) { a[j]--; break; }
					}
				}
			fprintf(g,"%c",x), last=x;
			}
		}
	return 0;
	}