Pagini recente » Cod sursa (job #1916966) | Cod sursa (job #29058) | Cod sursa (job #1792461) | Cod sursa (job #411768) | Cod sursa (job #1104987)
#include<stdio.h>
int v[30];
int main()
{
FILE *fin,*fout;
fin=fopen("ordine.in","r");
fout=fopen("ordine.out","w");
char ch=fgetc(fin);
int l=1;
while(ch!='\n'&&ch!=EOF)
{
v[ch-'a']++;
ch=fgetc(fin);
l++;
}
l--;
char cprev='1';
int i,l2=1;
for(i=0; i<26; i++)
{
int j=i+1,Poz=-1;
while(j<26&&Poz==-1)
{
if(v[j]>=(l-l2+1)/2+1)
Poz=j;
j++;
}
if(Poz!=-1)
{
fprintf(fout,"%c",'a'+Poz);
cprev='a'+Poz;
l2++;
v[Poz]--;
}
while(v[i]!=0)
{
v[i]--;
if(cprev=='a'+i)
{
int j=i+1,Poz=-1;
while(j<26&&Poz==-1)
{
if(v[j]>=(l-l2+1)/2+1)
Poz=j;
j++;
}
j=i+1;
while(j<26&&v[j]==0)
j++;
if(j<26&&Poz==-1)
{
v[j]--;
fprintf(fout,"%c",'a'+j);
cprev='a'+j;
l2++;
}
else
{
v[Poz]--;
fprintf(fout,"%c",'a'+Poz);
cprev='a'+Poz;
l2++;
}
}
fprintf(fout,"%c",'a'+i);
cprev='a'+i;
l2++;
}
}
return 0;
}