Cod sursa(job #312355)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 5 mai 2009 19:46:53
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>
#include <string.h>
#define N 1000005
char s[N];
int v[28],t,exceptie,ult_af;
void citire()
{
	/*fgets(s+1,N,stdin);
	int i;
	t=(int)strlen(s+1);
	for (i=1; i<=t && s[i]!='\n'; i++)
		v[(int)s[i]-96]++;*/
	char x; 
    while (scanf("%c",&x) && (int) x>=97 && (int)x<=122) 
    { 
        v[(int)x-96]++; 
		t++;
	}  
}
void rezolva()
{
	int i,j,k;
	while (t)
	{
		for (i=1; i<=26; i++)
		{
			if (v[i]==t/2+1)
			{
				exceptie=1;
				for (j=1; j<=v[i]; j++)
				{
					printf("%c",i+96);
					t--;
					for (k=1; k<=27; k++)
						if (k!=i && v[k])
						{
							printf("%c",k+96);
							t--;
							v[k]--;
							break;
						}
				}
				break;
			}
		}
		if (exceptie)
			break;
		for (i=1; i<=26; i++)
			if (v[i] && i!=ult_af)
			{
				printf("%c",i+96);
				ult_af=i;
				t--;
				v[i]--;
				break;
			}
	}
	printf("\n");
}
int main()
{
	freopen("ordine.in","r",stdin);
	freopen("ordine.out","w",stdout); 
	citire();
	rezolva();
	return 0;
}