Pagini recente » Cod sursa (job #1713740) | Cod sursa (job #2045766) | Cod sursa (job #1811344) | Cod sursa (job #1175898) | Cod sursa (job #187433)
Cod sursa(job #187433)
# include <stdio.h>
FILE *f=fopen("ordine.in","r");
FILE *g=fopen("ordine.out","w");
int Ap[133];
char uc,c,ch;
int k=0,x=0,ok=0;
int main()
{
fscanf(f,"%c",&c);
do {
Ap[int(c)]=Ap[int(c)]+1;
k++;
fscanf(f,"%c",&c);;
}while (!feof(f));
fclose(f);
ch='a';
while (!Ap[int(ch)])
ch++;
x=0;
while (x<k){
if (Ap[int(ch)])
{
x++;ok=0;
for (c=ch;c<='z';c++)
if (Ap[int(c)]>=(k-x+1)/2+1) {
ok=1;
break;
}
if (ok) {
fprintf(g,"%c",c);
Ap[int(c)]--;
uc=c;
}
else {
if (uc!=ch) {
fprintf(g,"%c",ch);
Ap[int(ch)]--;
uc=ch;
}
else {
ok=0;
for (c=ch+1;c<='z';c++)
if (Ap[int(c)]!=0) {
ok=1;
break;
}
if (ok)
{
fprintf(g,"%c",c);
uc=c;
Ap[int(c)]--;
}
}
}
} else ch++;
}
fprintf(g,"\n");
fclose(g);
return 0;
}