Pagini recente » Cod sursa (job #1031716) | Cod sursa (job #1276424) | Cod sursa (job #2356396) | Cod sursa (job #2962003) | Cod sursa (job #160558)
Cod sursa(job #160558)
#include <stdio.h>
#include <string.h>
#define J 50
#define N 1000
char v[N];
int f[N];
int judete[N];
struct solutie{
int aa,bb;
};
int main()
{
solutie sol[N];
int l,i,j,nr=0,n;
int inj,gata,aux,aux1;
freopen("ordine.in", "r",stdin);
freopen("ordine.out", "w",stdout);
scanf("%s\n", v);
l=strlen(v);
for(i=0;i<l;++i)
{
if(!judete[v[i]]) ++nr;
++judete[v[i]];
}
for(i=0;i<l;++i)
f[i]=judete[v[i]];
inj=l;
while(inj>1)
{
inj/=2;
do{
gata=1;
for(i=0;i<l-inj;++i)
if (v[i]>v[i+inj])
{
gata=0;
aux=v[i];
aux1=f[i];
v[i]=v[i+inj];
f[i]=f[i+inj];
v[i+inj]=aux;
f[i+inj]=aux1;
}
}while(!gata);
}
//for(i=0;i<l;++i)
// printf("%c %d \n", v[i],f[i]);
//printf("\n");
sol[0].aa=v[0];
sol[0].bb=f[0];
v[0]=0;
for(i=1;i<l;++i)
for(j=0;j<l;++j)
if(sol[i-1].aa!=v[j] && v[j]!=0)
{
sol[i].aa=v[j];
sol[i].bb=f[j];
v[j]=0;
break;
}
for(i=0;i<l;++i)
printf("%c", sol[i].aa,sol[i].bb);
return 0;
}