Pagini recente » Cod sursa (job #1133357) | Cod sursa (job #2205428) | Cod sursa (job #1806385) | Cod sursa (job #2105359) | Cod sursa (job #187432)
Cod sursa(job #187432)
# 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[c]=Ap[c]+1;
k++;
fscanf(f,"%c",&c);;
}while (!feof(f));
fclose(f);
ch='a';
while (!Ap[ch])
ch++;
x=0;
while (x<k){
if (Ap[ch])
{
x++;ok=0;
for (c=ch;c<='z';c++)
if (Ap[c]>=(k-x+1)/2+1) {
ok=1;
break;
}
if (ok) {
fprintf(g,"%c",c);
Ap[c]--;
uc=c;
}
else {
if (uc!=ch) {
fprintf(g,"%c",ch);
Ap[ch]--;
uc=ch;
}
else {
ok=0;
for (c=ch+1;c<='z';c++)
if (Ap[c]!=0) {
ok=1;
break;
}
if (ok)
{
fprintf(g,"%c",c);
uc=c;
Ap[c]--;
}
}
}
} else ch++;
}
fprintf(g,"\n");
fclose(g);
return 0;
}