Pagini recente » Cod sursa (job #3204707) | Cod sursa (job #2192220) | Cod sursa (job #52768) | Cod sursa (job #1100054) | Cod sursa (job #160566)
Cod sursa(job #160566)
#include <stdio.h>
#include <string.h>
#define J 50
#define N 100000
char v[N];
int f[N];
struct solutie{
int aa,bb;
};
int main()
{
solutie sol[N];
int min,l,i,j,g,nr=0;
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(!f[v[i]]) ++nr;
++f[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);
}
sol[0].aa=v[0];
sol[0].bb=f[0];
v[0]=0;
for(i=1;i<l;++i)
{
g=0;
for(j=0;j<l;++j)
{
if(sol[i-1].aa!=v[j] && v[j]!=0 && !g)
{ min=j; g=1; }
if(sol[i-1].aa!=v[j] && f[i]==(l-i+1/2)+1)
{
sol[i].aa=v[j];
sol[i].bb=f[j];
v[j]=0;
g=3;
break;
}
}
if(g!=3)
{
sol[i].aa=v[min];
sol[i].bb=f[min];
v[min]=0;
}
}
//N-x+1)/2+1
for(i=0;i<l;++i)
printf("%c", sol[i].aa,sol[i].bb);
return 0;
}