Cod sursa(job #312155)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 5 mai 2009 11:16:33
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 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]++;
}
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--;
					//v[i]--;
					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;
			}
	}
}
int main()
{
	freopen("ordine.in","r",stdin);
	freopen("ordine.out","w",stdout); 
	citire();
	rezolva();
	return 0;
}