Pagini recente » Cod sursa (job #2354843) | Cod sursa (job #30482) | Cod sursa (job #2220873) | Cod sursa (job #2400435) | Cod sursa (job #272241)
Cod sursa(job #272241)
#include<iostream.h>
#include<stdio.h>
#include<string.h>
FILE *f=fopen("ordine.in","r"),*g=fopen("ordine.out","w");
int c[30];
int main()
{
int len,i,j;
int max,jmax,s,next1,next2,last=0;
char a[1000005];
fscanf(f,"%s",&a);
len=strlen(a);
for(i=0;i<len;i++)
{
c[a[i]-'a'+1]++;
}
for(i=0;i<len;i++)
{
max=s=next1=next2=0;
for(j=1;j<=26;j++)
{
if(c[j]&&!next1) next1=j;
if(c[j]&&next1!=j&&!next2) next2=j;
if(c[j]>max) max=c[j],jmax=j;
s+=c[j];
}
s-=c[jmax];
if(s>=max)
if(next1!=last)
{
fprintf(g,"%c",(next1+'a'-1));last=next1;c[next1]--;
}
else
{
fprintf(g,"%c",(next2+'a'-1));last=next2;c[next2]--;
}
else
{
fprintf(g,"%c",(jmax+'a'-1));last=jmax;c[jmax]--;
}
}
return 0;
}