Pagini recente » Cod sursa (job #2948916) | Cod sursa (job #112102)
Cod sursa(job #112102)
#include <stdio.h>
long a[30],Suma;
void citire()
{
freopen ("ordine.in","r",stdin);
char c;
scanf("%c",&c);
while (!feof(stdin))
{
a[c-'a']++;
scanf("%c",&c);
}
fclose(stdin);
}
void adun()
{
for (int i=0;i<=26;i++)
Suma+=a[i];
}
void afisare ()
{
freopen ("ordine.out","w",stdout);
int i=0,inc,sf;
for (i=0;i<27;i++)
if (a[i]!=0)
{
inc=i;
break;
}
for ( i=i+1;i<=26;i++ )
if (a[i]!=0)
{
sf=i;
break;
}
while (Suma!=0)
{
int ok=1;
if (a[inc]==0 || (inc>sf))
{
int j=sf;
for (j=sf+1;j<=26;j++)
if (a[j]!=0)
{
inc=j;
break;
}
for (j=0;j<=26;j++)
if (a[j]!=0&&inc!=j)
{
ok=0;
sf=j;
break;
}
}
else{
if (a[sf]==0)
{
int i=sf+1;
for (;i<27;i++)
if (a[i]!=0)
{
sf=i;
ok=0;
break;
}
}
else
ok=0;}
if (ok==0){
a[inc]--;
a[sf]--;
Suma-=2;
printf("%c",inc+'a');
printf("%c",sf+'a');
}
if (ok==1)
{
a[inc]--;
Suma--;
}
}
fclose(stdout);
}
int main()
{
citire();
adun();
afisare();
return 0;
}